как завершить array_walk на первом цикле? - PullRequest
0 голосов
/ 01 февраля 2019

Мне нужно напечатать только один субтитр первого дочернего (1955) массива.

Вот пример кода (который работает), чтобы показать, что я имею в виду.

$array = Array
(
    [1955] => Array
        (
            [sub_title] => subtitle
            [sub_content] => content
        )
    [1957] => Array
        (
            [sub_title] => subtitle
            [sub_content] => conent
        )
    [1958] => Array
        (
            [sub_title] => subtitle
            [sub_content] => conent
        )
)
array_walk($array, function($item){
    echo $item['sub_title'];
    break;
});

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Насколько я понимаю вашу задачу, вам нужно получить первый элемент массива.Используйте функцию reset(array $array), чтобы получить первый элемент, а затем получить значение.Поэтому ваш код должен выглядеть так: $fistElement = reset($array); echo $firstElement['sub_titile']; Пожалуйста, прочтите также документацию по функции массива и не пытайтесь шить молотком

0 голосов
/ 01 февраля 2019

Вы должны создать глобальную логическую переменную, которая действует как флаг

<?php
$walk_arr = [
    0 => "A",
    1 => "B",
    3 => "D",
    5 => "F",
];
global $stop_walk;
$stop_walk = false;
$walk_func = function(&$v, $k) {
    global $stop_walk;
    if ($k === 3) {
        $stop_walk = true;
    }
    if ($stop_walk) { 
        return;
    }
    $v .= " changed";
};
unset($stop_walk);

array_walk($walk_arr, $walk_func);
print_r($walk_arr);
print $stop_walk;

Видите это в действии: https://3v4l.org/6kceo

Кстати: вы не можете просто вывести первую строку?

echo $array[1995]['sub_title']
...