PHP поиск ключа в многомерном массиве - PullRequest
0 голосов
/ 08 декабря 2010

У меня есть это:

Array
(
    [carx] => Array
        (
            [no] => 63

        )

    [cary] => Array
           (
           [no] => 64

           )
)

Как я могу найти ключ Каркс, когда у меня нет = 63? Я знаю, как использовать array_search(), но это немного сложно. Как я могу найти ключевое имя id, в то время как у меня есть 63 Но это немного сложно.

Может кто-нибудь мне помочь?

Ответы [ 3 ]

1 голос
/ 08 декабря 2010
foreach ($array as $i => $v) $array[$i] = $v['no'];
$key = array_search(63, $array);
0 голосов
/ 03 мая 2017

Это какая-то польза?Я использую его для общего поиска по массивам и объектам.Примечание: это не тестирование на скорость / стресс.Не стесняйтесь указывать на любые очевидные проблемы.

function arrayKeySearch(array $haystack, string $search_key, &$output_value, int $occurence = 1){
    $result             = false;
    $search_occurences  = 0;
    $output_value       = null;
    if($occurence < 1){ $occurence = 1; }
    foreach($haystack as $key => $value){
        if($key == $search_key){
            $search_occurences++;
            if($search_occurences == $occurence){
                $result         = true;
                $output_value = $value;
                break;
            }
        }else if(is_array($value) || is_object($value)){
            if(is_object($value)){
                $value = (array)$value;
            }
            $result = arrayKeySearch($value, $search_key, $output_value, $occurence);
            if($result){
                break;
            }
        }
    }
    return $result;
}
0 голосов
/ 08 августа 2013

Таким образом, вы не пользуетесь своим ключом id для первого уровня, так что проходите, и когда вы найдете совпадение, прекратите цикл и вырвитесь из foreach

$id = 0;
$needle = 63;
foreach($array as $i => $v)
{
    if ($v['no'] == $needle)
    {
        $id = $i;
        break 1;
    }
}
// do what like with any other nested parts now
print_r($array[$id]);

Тогда вы можете использовать этот ключ для получения всего вложенного массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...