Есть ли более простой способ и меньше кода для печати всех строк внутри массива, если индекс меньше, чем желаемое число, а также? Пример:
$string = Array(
[0] => A,
[1] => B,
[2] => C,
[3] => D
);
Я хочу напечатать всю строку с индексом меньше 3, а также разделены /
как это:
A/B/C
Я знаю, что могу использовать implode
затем используйте foreach
с if
но я хочу знать, можно ли это сделать всего одной строкой? Спасибо
Вы можете сделать это с лопаются () а также array_slice () как ниже: —
$input = array("a", "b", "c", "d", "e");
$output = implode("/",array_slice($input,0, 3));
echo $output;
Выход:- https://eval.in/887209
Заметка:- если ваш массив не отсортирован, а затем также вы хотите a/b/c
затем используйте Сортировать() функция как ниже: —
Ты можешь использовать array_filter
чтобы отфильтровать все ключи массива ниже 3 (или другое значение):
<?php
$arr = ['A', 'B', 'C', 'D'];
$newArr = array_filter($arr, function($val) {
return $val < 3;
}, ARRAY_FILTER_USE_KEY);
var_dump(implode('/', $newArr)); //string(5) "A/B/C"
Я не рекомендую использовать array_slice
. Зачем? Ваш заголовок описывает вашу проблему и что делать с массивом: «вывести всю строку массива, если индекс меньше чем что-то».
Поэтому вам нужен код, который удаляет все элементы массива, ключи которых больше или равны определенному значению (в вашем случае 3). Таким образом, вы можете использовать for
или же foreach
цикл для проверки каждого элемента на соответствие этому условию и удаления недействительных элементов. Другая возможность заключается в использовании решения с использованием array_filter
(как вышеупомянутый).
Почему бы и нет array_slice
: Эта функция извлекает только фрагмент из массива независимо от ключа. Вы определяете, как должен выглядеть этот срез, но в конце вы не можете быть уверены, что все ключи действительны, потому что вы (и array_slice
не проверяйте это.
пример где array_slice
не делай что хочешь
<?php
$input = ['A', 'B', 'C', 'D', 'E'];
unset($input[1]);
//using array_slice
var_dump(implode('/', array_slice($input, 0, 3))); //string(5) "A/C/D"
//using array_filter
$output = array_filter($input, function($val) {
return $val < 3;
}, ARRAY_FILTER_USE_KEY);
var_dump(implode('/', $output)); //string(3) "A/C"
Если вы можете быть уверены, что массив заполнен и нет никаких ключей, вы можете использовать array_slice
но это не сделано, чтобы удалить определенные ключи.
Ты можешь использовать sort
отсортировать значения массива, но ваши ключи будут изменены:
Эта функция присваивает новые ключи элементам в массиве. Он удалит все существующие ключи, которые могли быть назначены, вместо того, чтобы просто переупорядочивать ключи.