Я сделал сценарий, в котором в основном я взрываю строку, например:
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
И я делаю условие, при котором, если оно истинно, я должен отключить первое значение массива (с ключом 0)
if (condition) {
unset($pieces[0]);
Проблема в том, что когда я сбрасываю первое значение, массив начинается с ключа 1, и мне нужно, чтобы он начинался с ключа 0, поскольку мне нужно объединить значения с параллельным массивом.
Итак, вопрос: кто-нибудь знает функцию для перестройки массива со стандартными ключами (от 0 до n). Спасибо.
из документа: array_shift() shifts the first value of the array off and returns it, shortening the array by one element and moving everything down. All numerical array keys will be modified to start counting from zero while literal keys won't be touched.






if (condition) {
array_shift($pieces);
}
print_r($pieces);
array_shift - Сдвигает элемент с начала массива
Или вы можете использовать array_values для сброса всех ключей.
if (condition) {
unset($pieces[0]);
$pieces = array_values($pieces);
}
Если вы удалите элемент [5], он сделает [6] -> [5]
Использование array_values
$pieces = array_values($pieces);
Вы можете использовать функцию PHP array_shift () для удаления первого элемента или значения из массива. Функция array_shift () также возвращает удаленное значение массива. Однако, если массив пуст (или переменная не является массивом), возвращаемое значение будет NULL.
<?php
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
// Deleting first array item
$removed = array_shift($pieces);
print_r($pieces);
echo "<br>";
var_dump($removed);
?>
Выход
Array ( [0] => piece2 [1] => piece3 [2] => piece4 [3] => piece5 [4] => piece6 )
// Removed
string(6) "piece1"
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$arr = explode(" ", $pizza);
foreach($arr as $k => $v) {
if ($v == 'piece3' || $v == 'piece5') {
array_splice($arr, $k, 1);
}
}
print_r($arr);
// Array
// (
// [0] => piece1
// [1] => piece2
// [2] => piece4
// [3] => piece5
// )
Взгляните на функцию array_filter. Это дает вам возможность принимать еще более сложные решения.
$result = array_filter($pieces, function($index) {
return $index > 0;
}, ARRAY_FILTER_USE_KEY);
использовать array_values ($ штук)