У меня есть массив, как так:
[a, b, c, d, e]
У меня есть значение, которое я хочу удалить из массива в этом случае a
теперь массив должен выглядеть так:
[b, c, d, e]
это легко, я могу просто сделать:
$del_var = 'a';
if (($key = array_search($del_val, $array)) !== false) {
unset($messages[$key]);
}
но в случае, если у меня есть массив с содержит значение поиска a
дважды или больше, я просто хочу уменьшить количество значений на единицу. вот так:
[a, a, a, b, c, d]
должен дать мне:
[a, a, b, c, d]
как бы я пошел по этому поводу?
Вы могли бы, вероятно, получить один экземпляр ключа, используя array_keys
:
if (($key = array_search($del_var, $array)) !== false) {
$keys = array_keys($array, $del_var);
// get the first key;
if (!empty($keys)) {
unset($messages[$keys[0]]);
}
}
Предполагая, что вы ищете a
, array_keys
должен дать все ключевые показатели a
внутри $array
, Затем просто получите первый (или в зависимости от того, сколько вы хотите), вы можете сбросить их, используя события.
array_keys () возвращает все ключи, которые соответствуют значению поиска (= 2-й параметр). count () подсчитывает результаты array_keys (). Если число больше 1, сбросьте первый элемент с этим значением.
$array = array('a', 'd', 'b', 'c', 'b', 'b', 'd', 'e');
$result = array_keys($array, 'b');
if(count($result) > 1){
unset($array[$result[0]]);
}
Выход:
Array
(
[0] => a
[1] => d
[3] => c
[4] => b
[5] => b
[6] => d
[7] => e
)
Вы можете использовать цикл foreach, например так:
$array = ['a', 'a', 'b', 'c', 'd', 'a', 'e'];
$del_var = 'a';
foreach ($array as $key => $value) {
if($value == $del_var){
unset($array[$key]);
break;
}
}
echo "<pre>";
print_r($array);
echo "</pre>";
Я думаю, что вы могли бы использовать для цикла, и если вы столкнулись со значением a
вы снята с охраны значение и остановка цикла, поэтому сброс будет выполнен только один раз.
$array = ['a', 'a', 'a', 'b', 'c', 'd', 'e'];
$del_var = 'a';
for ($i = 0; $i < count($array); $i++) {
if ($array[$i] === $del_var) {
unset($array[$i]);
break;
}
}
print_r($array);
Это приведет к:
Array
(
[1] => a
[2] => a
[3] => b
[4] => c
[5] => d
[6] => e
)