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 будет массивом, объект указан в
Благодарю.
Попробуйте это. В вашем массиве есть объект, поэтому вам нужно извлечь значение по объекту и использовать следующую логику, чтобы получить ключ.
foreach ($array as $key=>$obj){
if($obj->comment_parent == 30){
break;
}
}
echo "Required Key is ==>".$key;
Возможно, вам следует бросить объект следующим образом
$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.