вывести всю строку массива, если индекс меньше чем-то

Есть ли более простой способ и меньше кода для печати всех строк внутри массива, если индекс меньше, чем желаемое число, а также? Пример:

$string = Array(
[0] => A,
[1] => B,
[2] => C,
[3] => D
);

Я хочу напечатать всю строку с индексом меньше 3, а также разделены / как это:

A/B/C

Я знаю, что могу использовать implode затем используйте foreach с if но я хочу знать, можно ли это сделать всего одной строкой? Спасибо

3

Решение

Вы можете сделать это с лопаются () а также 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 затем используйте Сортировать() функция как ниже: —

https://eval.in/887231

0

Другие решения

Ты можешь использовать 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"

демо: https://ideone.com/B1rn6I


Я не рекомендую использовать 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"

демо: https://ideone.com/npySEs

Если вы можете быть уверены, что массив заполнен и нет никаких ключей, вы можете использовать array_slice но это не сделано, чтобы удалить определенные ключи.


Ты можешь использовать sort отсортировать значения массива, но ваши ключи будут изменены:

Эта функция присваивает новые ключи элементам в массиве. Он удалит все существующие ключи, которые могли быть назначены, вместо того, чтобы просто переупорядочивать ключи.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector