¿Cómo puedo crear una matriz con pares de valores clave?

2 minutos de lectura

avatar de usuario
lijadoras

¿Cómo puedo agregar pares de valores clave a una matriz?

Esto no funcionará:

public function getCategorieenAsArray(){

    $catList = array();

    $query = "SELECT DISTINCT datasource_id, title FROM table";
    if ($rs=C_DB::fetchRecordset($query)) {
        while ($row=C_DB::fetchRow($rs)) {
            if(!empty($row["title"])){
                array_push($catList, $row["datasource_id"] ."=>". $row["title"] );
            }
        }
     }

    return($catList);
}

Porque me da:

Array ( [0] => 1=>Categorie 1 [1] => 5=>Categorie 2 [2] => 2=>Caterorie 2 ) 

Y espero:

Array ( [1] =>Categorie 1 [5] => Categorie 2  ) 

  • ¿Alguien con más representantes puede editar esta pregunta y corregir el salto de línea?

    –Brian Ramsay

    16 de julio de 2009 a las 15:22

avatar de usuario
alegría

$data =array();
$data['user_code']  = 'JOY' ;
$data['user_name']  = 'JOY' ;
$data['user_email'] = '[email protected]';

  • Esta simple respuesta lo explica bien para mí.

    – Blowsie

    28 de enero de 2013 a las 11:54

  • Lo único con esta solución es que de esta manera solo puede agregar pares clave-valor al final de la matriz, incluso si tiene claves enteras. Las matrices de PHP están ordenadas, por lo que si desea anteponer una matriz con un par clave-valor, debe hacer esto: $data = ['user_email' => [email protected]'] + $data.

    – totymedli

    9 mayo 2018 a las 22:31


Utilizar el sintaxis de corchetes:

if (!empty($row["title"])) {
    $catList[$row["datasource_id"]] = $row["title"];
}

$row["datasource_id"] es la clave para donde el valor de $row["title"] se almacena en.

avatar de usuario
isabel wedin

Mi PHP está un poco oxidado, pero creo que está buscando una tarea indexada. Simplemente use:

$catList[$row["datasource_id"]] = $row["title"];

En PHP, las matrices son en realidad mapas, donde las claves pueden ser números enteros o cadenas. Verificar PHP: Matrices – Manual para más información.

avatar de usuario
Rajan Rawal

Puede crear el valor clave de matriz de valor único como

$new_row = array($row["datasource_id"]=>$row["title"]);

dentro del ciclo while, y luego use array_merge función en bucle para combinar cada nuevo $new_row formación.

Puede usar esta función en su aplicación para agregar claves a la matriz indexada.

public static function convertIndexedArrayToAssociative($indexedArr, $keys)
{
    $resArr = array();
    foreach ($indexedArr as $item)
    {
        $tmpArr = array();
        foreach ($item as $key=>$value)
        {
            $tmpArr[$keys[$key]] = $value;
        }
        $resArr[] = $tmpArr;
    }
    return $resArr;
}

No necesita la función array_push. Si desea agregar varios elementos, funciona bien. simplemente intente esto y funcionó para mí

class line_details {
   var $commission_one=array();
   foreach($_SESSION['commission'] as $key=>$data){
          $row=  explode('-', $key);
          $this->commission_one[$row['0']]= $row['1'];            
   }

}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad