Найти значение и ключ в многомерном массиве - PullRequest
1 голос
/ 20 декабря 2011

У меня есть следующий массив:

Array ( 
    [0] => Array ( 
        [word] => 1 
        [question] => php 
        [position] => 11 
    )
    [1] => Array ( 
        [word] => sql 
        [question] => 1 
        [position] => 22 
    ) 
)

Мне нужно найти, существует ли [позиция] => 22 в моем массиве, и сохранить путь к массиву для дальнейшего использования.Спасибо.

Ответы [ 8 ]

3 голосов
/ 20 декабря 2011

Пример кода для решения "Ancide" предоставить.

$found = false;

foreach ($array as $array_item) {
    if (isset($array_item['position'] && $array_item['position'] == "22")) {
        $found = true;
        break;
    }
}
1 голос
/ 20 декабря 2011

Вы можете попробовать этот код:

$array = array 
( 
    array ( 
        "word" => 1,
        "question" => php,
        "position" => 11 
    ),
    array ( 
        "word" => sql,
        "question" => 1,
        "position" => 22 
    ) 
);

foreach($array as $item)
{
    foreach($item as $key=>$value)
    {
        if($key=="position" && $value=="22")
        {
           echo "found";
        }
    }
}
0 голосов
/ 20 декабря 2011
function findPath($array, $value) {
    foreach($array as $key => $subArray)  if(subArray['position'] === $value) return $key;
    return false;  // or whatever if not found
}


echo findPath($x, 22);  //  returns 1


$x= Array ( 
    [0] => Array ( 
        [word] => 1 
        [question] => php 
        [position] => 11 
    )
    [1] => Array ( 
        [word] => sql 
        [question] => 1 
        [position] => 22 
    ) 
)
0 голосов
/ 20 декабря 2011

Это решит вашу проблему:

<?php

foreach ($array as $k => $v) {
    if(isset($v['position']) && $v['position'] == 22) {
    $key = $k;  
    }
}
echo $key;

//$array[$key]['position'] = 22

?>
0 голосов
/ 20 декабря 2011

Попробуйте это:

function exists($array,$fkey,$fval)
{
foreach($array as $items)
{
   foreach($items as $key => $val)
     if($key == $fkey and $val == $fval)return true;
}
return false;
}

Пример:

if(exists($your_array,"position",22))echo("found");

0 голосов
/ 20 декабря 2011

Попробуйте с помощью этой функции:

function findKey($array, $mykey) {
    if(array_key_exists($mykey, $array))
        return true;

    foreach($array as $key => $value) {
        if(is_array($value))
            return findKey($value, $mykey);
    }

    return false;
}

if(findKey($search_array, 'theKey')) {
    echo "The element is in the array";
} else {
    echo "Not in array";
}
0 голосов
/ 20 декабря 2011

Я думаю, что нет другого решения, кроме как перебрать массив и проверить, есть ли ключ "position" и значение "22"

0 голосов
/ 20 декабря 2011

Сначала проверьте, существует ли ключ, используя isset, затем, если ключ существует, убедитесь, что значение равно вашему значению сравнения.

Редактировать: я пропустил, что было два массива.Чтобы решить эту проблему, выполните итерацию по каждому массиву и выполните проверку в каждом цикле.Если проверка положительна, вы знаете, какой это массив, посмотрев на текущий индекс.

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