Jak mogę utworzyć tablicę z parami klucz-wartość?


117

Jak mogę dodać pary klucz-wartość do tablicy?

To nie zadziała:

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);
}

Ponieważ daje mi:

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

I oczekuję:

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

2
Czy ktoś z większą liczbą przedstawicieli może edytować to pytanie i naprawić podział wiersza?
Brian Ramsay,

Odpowiedzi:


150

Użyj składni nawiasu kwadratowego :

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

$row["datasource_id"]jest kluczem do miejsca, w którym $row["title"]przechowywana jest wartość .


155
$data =array();
$data['user_code']  = 'JOY' ;
$data['user_name']  = 'JOY' ;
$data['user_email'] = 'joy@cargomar.org';

12
Ta prosta odpowiedź dobrze mi to wyjaśnia.
Blowsie

Jedyną rzeczą w tym rozwiązaniu jest to, że w ten sposób możesz dodawać tylko pary klucz-wartość na końcu tablicy, nawet jeśli masz klucze całkowite. Macierze PHP są sortowane, więc jeśli chcesz poprzedzić tablicę z pary klucz-wartość, trzeba to zrobić: $data = ['user_email' => joy@cargomar.org'] + $data.
totymedli

16

Mój PHP jest trochę zardzewiały, ale myślę, że szukasz przypisania indeksowanego. Po prostu użyj:

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

W PHP tablice są w rzeczywistości mapami, gdzie klucze mogą być liczbami całkowitymi lub łańcuchami. Sprawdź PHP: Arrays - Manual, aby uzyskać więcej informacji.


2

Możesz utworzyć pojedynczą tablicę wartości jako klucz-wartość

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

wewnątrz while loop, a następnie użyj array_mergefunkcji function in loop, aby połączyć każdą nową $new_rowtablicę.


1

Możesz użyć tej funkcji w swojej aplikacji, aby dodać klucze do tablicy indeksowanej.

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;
}

0

Nie ma potrzeby funkcji array_push. Jeśli chcesz dodać wiele pozycji, działa dobrze. po prostu spróbuj tego i zadziałało

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

}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.