我的数组包含值:
$array1 = array('Boss', 'Lentin', 'Endless');
print_r ($array);
结果将是:
Array ( [0] => Boss [1] => Lentin [2] => Endless
没关系。
但是,如果我用一个键向这个数组添加两个元素,那么“Boss”元素将会丢失。
$array2 = array("1"=>'Doctor','Boss', 2=>'Lynx', 'Lentin', 'Endless');
print_r ($array2);
结果将是:
Array ( [1] => Doctor [2] => Lynx [3] => Lentin [4] => Endless )
//Where is "BOSS"???
为什么?
答案 0 :(得分:8)
当php创建数组时,在索引1中设置Doctor
,在索引2中设置Boss
,但是2=>'Lynx'
会导致php覆盖索引2并在其中设置Lynx
。
您可以在设置索引后设置它或使用索引。例如
$array2 = array("1"=>'Doctor', 2=>'Lynx', 'Boss', 'Lentin', 'Endless');
// or
$array2 = array("1"=>'Doctor', 2=>'Boss', 3=>'Lynx', 'Lentin', 'Endless');
答案 1 :(得分:5)
当创建$ array时,'Boss'将首先存储在索引2 (Array([2] =>'Boss')
中,后来被'Lynx'覆盖
答案 2 :(得分:3)
您的问题是索引键
$array2 = array("1"=>'Doctor','Boss', 2=>'Lynx', 'Lentin', 'Endless');
print_r ($array2);
这是因为,在索引1上它已经是医生,老板将是第二名,这将被Lynx取代,其中指数为2,其中boss将被替换。
我希望我很清楚。
答案 3 :(得分:3)
这是php的预期行为(参见http://php.net/manual/en/language.types.array.php#example-57)。如果您需要数组中的所有值并且不需要使用键,我建议使用array_push($array $value)
。否则,您应该使用其键添加所有值,并记住,对于PHP 1
和"1"
和true
是相同的值,因此它们将相互覆盖。
答案 4 :(得分:2)
array()是一个带有表示文字数组的动态参数的构造。将给定值分配给阵列结构是顺序,即从左到右逐个完成。在您的示例中:
Doctor
已分配给索引1。Boss
被分配到索引2。Lynx
会覆盖索引2. Lentin
和Endless
分别分配给索引3和4。答案 5 :(得分:1)
嘿@Weltkind首先我建议你阅读 " http://php.net/manual/en/language.types.array.php",
现在回答你的答案在php中,数组键可以是字符串或整数,如果你没有提到键那么 设置默认整数,下一个数组键的值取决于前一个数组整数键意味着
下一个数组键=上一个整数键+ 1;
在PHP数组中,相同的键值将被相同的键覆盖
现在让我们了解你的array2:
<?php
$array2 = array("1"=>'Doctor','Boss', 2=>'Lynx', 'Lentin', 'Endless');
1)当您使用键&#34; 1&#34;启动数组时所以
所以对于第一个键值是[1] =&gt; &#39;医生&#39;
当前数组如:array([1] =&gt;&#39; Doctor&#39;)
now next key =上一个整数键(即1)+ 1 = 2;
2)对于第二键值是[2] =&gt; &#39; BOSS&#39;
当前数组如:array([1] =&gt;&#39; Doctor&#39;,[2] =&gt;&#39; BOSS&#39;)
3)下一个键=前一个整数键(即2)+ 1 = 3它将携带 到下一个键但是下一个键是[2] =&gt; &#39;山猫&#39;就像你提到的那样 key [2]该值将被值覆盖&#39; BOSS&#39;到了Lynx&#39 ;;当前 数组如:array([1] =&gt;&#39; Doctor&#39;,[2] =&gt;&#39; Lynx&#39;)
现在我们的下一个关键是[3]
4)对于下一个值,键是[3] =&gt; &#39; Lentin&#39;
当前数组如:array([1] =&gt;&#39; Doctor&#39;,[2] =&gt;&#39; Lynx&#39;,[3] =&gt; &#39; Lentin&#39);
now next key =上一个整数键(即3)+ 1 = 4;
5)对于下一个值,键是[4] =&gt; &#39;无尽&#39;
当前数组如:array([1] =&gt;&#39; Doctor&#39;,[2] =&gt;&#39; Lynx&#39;,[3] =&gt; &#39; Lentin&#39;,[4] =&gt; &#39;无尽&#39);
这就是最终数组如下所示的原因:
array(
[1] => 'Doctor',
[2] => 'Lynx',
[3] => 'Lentin',
[4] => 'Endless'
);