Array_Search в многомерном массиве

0
Array
    (
        [0] => stdClass Object
            (
                [comment_ID] => 31
                [comment_post_ID] => 16
                [comment_karma] => 0
                [comment_approved] => 1
                [comment_parent] => 0
        )
    [1] => stdClass Object
        (
            [comment_ID] => 32
            [comment_post_ID] => 16
            [comment_karma] => 0
            [comment_approved] => 1
            [comment_parent] => 31
        )

    [2] => stdClass Object
        (
            [comment_ID] => 33
            [comment_post_ID] => 16
            [comment_karma] => 0
            [comment_approved] => 1
            [comment_parent] => 30
        )
    )

    <?
    foreach ($array as $comments)
    {
    $key = array_search ("30", $comments);
    echo $key;
    }
    ?>

Мне нужно было бы получить ключ массива, где он расположен для comment_parent 30, который находится в [2] массиве. Я пытался с array_search, но я получаю эту ошибку:

Предупреждение: array_search() ожидает, что параметр 2 будет массивом, объект указан в

Благодарю.

  • 0
    stackoverflow.com/questions/4742903/...
  • 0
    по крайней мере, дать мне один голос "за" :)
Теги:
arrays
multidimensional-array

2 ответа

2
Лучший ответ

Попробуйте это. В вашем массиве есть объект, поэтому вам нужно извлечь значение по объекту и использовать следующую логику, чтобы получить ключ.

foreach ($array as $key=>$obj){
    if($obj->comment_parent == 30){
        break;      
    }
}
echo "Required Key is ==>".$key;
  • 0
    Лучше удалите свой комментарий из блока кода.
  • 1
    И когда вы найдете свою переменную, полезно "сломать"; foreach. Это экономит процессорное время.
Показать ещё 1 комментарий
0

Возможно, вам следует бросить объект следующим образом

$key = array_search ("30", (array)$comments);

Это исправит вашу ошибку, но не сделает нужную работу. Лучше проверьте ответ @Prashant M Bhavsar

$commentKey = null;
foreach ($array as $key=>$obj)
{
    if(isset($obj->comment_parent) && $obj->comment_parent == 30){
        $commentKey = $key;
        break;
    }
}

Для более сложных структур или операторов вы можете использовать функцию array_map.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню