#php #mysql #arrays #codeigniter
#php #mysql #массивы #codeigniter
Вопрос:
При использовании запроса я получаю результат в массиве, я хочу получить эти данные в одном массиве, я получаю результат следующим образом
Array
(
[0] => stdClass Object
(
[id] => 2
[full_name] => amit sharma
)
[1] => stdClass Object
(
[id] => 1
[full_name] => amit
)
)
Я пытался использовать следующий код, но у меня не работает, где я ошибаюсь, вот мой код
$sql = "//select query";
$result= $this->db->query($sql)->result();
$total=count($result);
if($total>0)
{
$data=array();
foreach($result as $records)
{
$data[]=$records;
}
echo "<pre>";print_R($data);
}
Комментарии:
1. Было бы полезно увидеть пример массива, к которому вы хотите получить доступ
2. вы могли бы использовать
result_array()
вместоresult()
, тогда вы получите результат запроса в виде чистого массива3. Только данные? Потому что у вас не может быть дубликатов ключей в массиве.
4. но у меня не работает Вы имеете в виду, что это сбой? Вы имеете в виду, что он не генерирует нужный вам массив? Помните, что мы не заглядываем вам через плечо, мы можем помочь, только если вы предоставите нам достаточно информации, чтобы мы могли помочь
5. @MasivuyeCokile: если я использую result_array, то данные поступают в массив внутри массива
Ответ №1:
Вы можете легко выполнить цикл и получить значения в массиве, как показано ниже.
$post_id = array((object) (array(
'id' => 1,
'full_name' => "Amit Sharma",
)), (object) (array(
'id' => 2,
'full_name' => "Amit",
)), (object) (array(
'id' => 3,
'full_name' => "Amit Rohan",
)));
foreach ($post_id as $key => $value)
{ $result[] = array("id"=>$value->id, "full_name"=>$value->full_name); }
echo "<pre>";print_r($result);
Комментарии:
1. @Arafind Bhat K: я хочу ассоциативный массив, а не числовой / индексный
2. Обновленный мой ответ, пожалуйста, проверьте. У вас уже должно получиться. @NidhiGupta
Ответ №2:
Просто используйте json_encode () и json_decode()
Я создал тот же объект, что и в вашем примере, просто игнорируйте код до:
$result = [$objOne, $objTwo];
Используйте свой $result
Json кодирует и декодирует их, чтобы получить взамен ассоциативный массив.
Код:
<?php
$objOne = new stdClass();
$objOne->id = 2;
$objOne->full_name = 'amit sharma';
$objTwo = new stdClass();
$objTwo->id = 1;
$objTwo->full_name = 'amit';
$result = [$objOne, $objTwo];
$arr = json_decode(json_encode($result), TRUE);
echo '<pre>';
print_r($result);
echo '</pre>';
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
Вывод:
Array
(
[0] => stdClass Object
(
[id] => 2
[full_name] => amit sharma
)
[1] => stdClass Object
(
[id] => 1
[full_name] => amit
)
)
Array
(
[0] => Array
(
[id] => 2
[full_name] => amit sharma
)
[1] => Array
(
[id] => 1
[full_name] => amit
)
)