2009-07-16 121 views
94

如何将键值对添加到数组中?如何将键值对添加到数组中?

这是行不通的:

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

因为它给了我:

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

我期待:

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

可以有更多的代表编辑此问题,并修复换行? – 2009-07-16 15:22:33

回答

123

使用square bracket syntax

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

$row["datasource_id"]是其中$row["title"]值存储在密钥

15

我的PHP是一个有点生疏,但我相信你正在寻找索引分配。简单地使用:

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

在PHP数组实际上是映射,其中键可以是整数或字符串。检查出PHP: Arrays - Manual欲知更多信息。

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

这个简单的答案对我很好解释。 – Blowsie 2013-01-28 11:54:58

2

您可以创建一个值数组键值为

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

inside while循环,然后使用array_merge函数在循环中组合每个新的$new_row数组。

1

您可以在您的应用程序中使用此函数将键添加到索引数组中。

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

不需要array_push函数。如果你想添加多个项目,它工作正常。只是试试这个,它为我工作

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

} 
相关问题