как создать новый массив из ключей ассоциативного массива в php

#php #codeigniter #codeigniter-3

#php #codeigniter #codeigniter-3

Вопрос:

У меня есть массив, значение которого при распечатке отображается следующим образом

 Array ( 
        [q1] => Array ( 
                        [0] => stdClass Object (
                            [student_unique_id] => 6 
                            [studentname] => studentname 
                            [studentpassword] => 1213 
                            [dob] => 09/05/16 
                            [studentenrollmentnumber] => 1341243124 
                            [studentcontactnumber] => 9460930479 
                            [studentemailid] => abhisehk@mail.com 
                            [studentdepartmentname] => department of agriculture 
                            [studentpasswordtstatus] => 0 
                        ) 
                    ) 
        [q2] => Array ( )
)
  

когда я использую код print_r($prar); , все эти значения массива поступают из базы данных, и я использую mvc framework codeigniter.Теперь мне нужно разделить массив на 2 новых массива, используя key.Извините, если это звучит глупо, но я здесь новичок!

Комментарии:

1. можете ли вы разделить 2 новых массива, используя q1 q2 ключи и?

2. @razibalmamun извините, но я новичок, и я не знаю, какую функцию использовать для этого?

3. Можете ли вы поместить здесь пример вывода, как вы хотите?

4. @VijaysinhParmar я хочу убедиться, что ключ q1 в массиве сам по себе становится новым массивом, а ключ q2 сам по себе становится вторым массивом!

5. @AbhishekJoshi Пожалуйста, предоставьте свой вывод в поле для комментариев, что вы хотите.

Ответ №1:

Примечание: при использовании print_r() он будет выводить массив с stdClass Object помощью CI, когда вы извлекаете значение из базы данных.

Существует решение для отображения массива без использования во stdClass Object время итерации.

Пример: Рассмотрим $final рассмотрим массив и при его использовании print_r() отобразим stdClass Object .

  • Вы должны использовать цикл следующим образом, чтобы избежать stdClass Object его при печати.

Код:

Этот код вы можете использовать для получения значений из базы данных с помощью контроллера и модели.

Если из базы данных извлекается одна строка выходных данных

 <?php
foreach($final->result() as $single)
{
   //You can print the variable values over here as follows (E.g) echo $single->id    
}
?>
  

Если из базы данных извлекается несколько строк выходных данных

 <?php
$row=array();
foreach($final->result() as $single)
{
   //You can store it as an array here if you are going on with multiple loops
   $row[] = $single; 
}
print_r($row); // here you can save it as an another array
?>
  

Как должен выглядеть код модели, если вы используете `->result()` в foreach для получения значений

Вот пример, на который должна выглядеть ваша модель, если вы используете вышеуказанные методы для получения выходных данных.

employee_model.php

 <?php
class Employee_model extends CI_Model{
function __construct() {
parent::__construct();
}

public function getEmployees()
{
    $this->db->select('*');
    $this->db->from('employee');
    $this->db->where('delete_status','0');
    $this->db->where('status','1');
    $this->db->order_by('id','DESC');
    $query = $this->db->get();
    return $query;
}
?>
  

Как вызвать модель из контроллера

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Home extends Layout_Controller {

public function __construct(){
     parent::__construct();
     $this->load->library("pagination");
     $this->load->model('employee_model');
     $this->load->model('ajax_model');         
 }

 public function employee_listing()
 {
     $result['all_employee'] = $this->employee_model->getEmployees(); // getEmployees is the function name in the employee_model
     $this->load->view('frontend/employee_list',$result);
 }
  

Ответ №2:

Можете ли вы попробовать следующий код :

 $new_array = array();
foreach($prar as $key=>$val) {
    $new_array[] = $val;
}

echo "<pre>";
print_r($new_array);
  

или возможное использование extract() — импортировать в таблицу символов переменные, содержащиеся в ассоциативном массиве, возвращаемом wddx_deserialize() .

 extract($prar, EXTR_PREFIX_SAME, "wddx");

echo "<pre>";
print_r($q1);
echo "</pre>";

echo "<pre>";
print_r($q2);
echo "</pre>";
  

Приведенный выше пример выведет:

 [0] => stdClass Object (
                            [student_unique_id] => 6 
                            [studentname] => studentname 
                            [studentpassword] => 1213 
                            [dob] => 09/05/16 
                            [studentenrollmentnumber] => 1341243124 
                            [studentcontactnumber] => 9460930479 
                            [studentemailid] => abhisehk@mail.com 
                            [studentdepartmentname] => department of agriculture 
                            [studentpasswordtstatus] => 0 


)

Array ( )
  

Комментарии:

1. Спасибо за ответ. Надеюсь, что лучше использовать метод, который я предложил, поскольку это будет самый безопасный способ избавиться stdClass Object . И это дополнительный процесс для хранения другого array() , поскольку для выполнения кода требуется больше времени. Надеюсь, что вы могли бы лучше понять мои объяснения.