Получение данных из внутреннего массива в Php

#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
        )

)