2017-07-20 68 views
-1
$c=array("a"=>"blue","b"=>"green"); 
array_push($c,$c["d"]="red"); 
print_r($c); 

此代码将键添加到数组中。但它也将索引键添加到相同的键/值对..如何避免此索引键? 输出:如何添加密钥到php数组?

Array 
(
    [a] => blue 
    [b] => green 
    [d] => red 
    [0] => red 
) 
+8

array_push不作出关联数组,仅索引的数组任何意义。 – GordonM

+0

想知道为什么这个问题是downvoted!它很明显,并显示了代码 –

回答

3

只需添加新密钥。

$c["y"] = "yellow"; 
3

您可以通过这种方式加入更多的元素:

$array = array("a"=>"blue","b"=>"green"); 
$array['c'] = 'red'; 
+0

尝试其工作..谢谢你..我们可以使用array_push()做同样的事情吗? – vaishu

+0

@vaishu你不能 – apokryfos

+0

@vaishu你不能,'array_push'是用于非索引数组(并且应该用于添加多个值,对于单个值,最好以这种方式使用它) – Yupik

3

您是否尝试过简单地使用$c['d'] = 'red';

5

不要在这里使用array_push()这是没有必要的。 只需添加新的键值。

$c= array("a"=>"blue","b"=>"green"); 
$c['d'] = 'red'; 
5

只需添加其他键值这样

$c=array("a"=>"blue","b"=>"green"); 
$c["d"]="red"; 
print_r($c); 

出放为

Array ([a] => blue [b] => green [d] => red) 
2

不喜欢它的,

$c=array("a"=>"blue","b"=>"green"); 
$c["d"]="red"; 
echo "<pre>"; 
print_r($c); 

和输出一样,

Array 
(
    [a] => blue 
    [b] => green 
    [d] => red 
) 
2

推新键值对到阵列中,像这样:

$c["d"] = "red"; 

键没有找到阵内将得到建立。

1

array_push基本上是一种将数组视为堆栈的操作。堆栈没有密钥,所以使用array_push的关联数组没有任何意义(因为无论如何您都无法使用array_pop来检索密钥)。

如果要模拟的array_push行为,它允许同时添加多个条目,你可以做到以下几点:

$c = array_merge($c, [ "d" => "red", "e" => "some other colour" ]); 
2

除了别人:你可以把元素的数组,但有没有记录的方式(http://php.net/array_push)选择您自己的密钥。因此array_push本身使用数字索引。

关联数组的一种可能替代方法是使用(匿名)对象(stdClass)。在这种情况下,您可以设置属性,并且它有更多的OOP编码风格。

$foo = new stdClass; 
$foo->bar = 1; 

var_dump($foo); 

// if you really want to use it as array, you can cast it 
var_dump((array) $foo); 
-1
$arrayName = array(
    'bb' => 'aaaa', 
    'cc' => 'dddd', 
    'dd' => 'xxxx', 
    'aa' => 'yyyy', 
    'ee' => 'rrrr'); 

$arrayname = ['aaaa','dddd','xxxx','yyyy','rrrr']; 

这个键是数字,相同

$arrayName = array(
    0 => 'aaaa', 
    1 => 'dddd', 
    2 => 'xxxx', 
    3 => 'yyyy', 
    4 => 'rrrr');