#php #arrays
#php #массивы
Вопрос:
У меня есть массив, который выглядит следующим образом:
Array
(
[0] => stdClass Object
(
[user_id] => 10
[date_modified] => 2010-07-25 01:51:48
)
[1] => stdClass Object
(
[user_id] => 16
[date_modified] => 2010-07-26 14:37:24
)
[2] => stdClass Object
(
[user_id] => 27
[date_modified] => 2010-07-26 16:49:17
)
[3] => stdClass Object
(
[user_id] => 79
[date_modified] => 2010-08-08 18:53:20
)
)
и что мне нужно сделать, это распечатать идентификатор пользователя, разделенный запятой, так:
10, 16, 27, 79
Я предполагаю, что это будет в цикле for, но я ищу наиболее эффективный способ сделать это на PHP
О, и имя массива такое: $mArray
Я пробовал это:
foreach($mArray as $k => $cur)
{
echo $cur['user_id'];
echo ',';
}
который предлагали другие.
Однако я продолжаю получать эту ошибку:
Неустранимая ошибка: не удается использовать объект типа stdClass в качестве массива в.
Я думаю, это потому, что этот массив не является типичным массивом, поэтому для него требуется какой-то другой синтаксис?
Ответ №1:
Каждый элемент массива является (анонимным) объектом и user_id
является свойством. Для доступа к нему используйте синтаксис доступа к свойству объекта ( ->
):
foreach($mArray as $k => $cur)
{
echo $cur->user_id;
echo ',';
}
Комментарии:
1. почему
$mArray as $k => $cur
почему бы не$mArray as $cur
просто2. @Ibrahim Ну, нет причин. Просто скопировал пример OPs.
Ответ №2:
foreach ($mArray as $cur){
echo $cur->user_id;
}
вы можете сделать это таким образом, поскольку работаете с объектами
Ответ №3:
Используйте это, если хотите избежать запятой в конце ( ,
).
$ids = array();
foreach ($array as $obj){
$ids[] = $obj->user_id;
}
echo join(', ', $ids);
Ответ №4:
Довольно близко…
foreach($mArrray as $k => $cur)
{
echo $cur->user_id.', ';
}