如标题,这篇想和大家聊聊「重复key」的问题
因为当你用print_r
去印出有重复key
的阵列时,它只会返回「最後一个key」的value
值
让我们看以下范例
PHP:
//宣告一个一维阵列,其key1重复两次
$one_array = array("key1" => "value110", "key1" => "value220");
echo "有重复key的阵列印出结果为:<br>";
print_r($one_array);
结果如下图所示:
那就会有人问,要怎麽样才能把同个key
的value
值全部都印出来?
这时我们就要把「一维」阵列改成「二维」阵列,因为每个阵列的key值都是「唯一」的,就像藏宝箱一样,只有一把钥匙能够打开
那要怎麽样才能把一维阵列改成二维阵列呢?
只要把原本的”key” => “value”
用array()
包起来,并用逗号
隔开就好
PHP:
(注意:这里有两个重复的key为key_1
)
//宣告一个二维阵列,其key_1重复两次
$many_array = array(array("key_1" => "value_1"), //key = 0
array("key_2" => "value_2"), //key = 1
array("key_3" => "value_3"), //key = 2
array("key_1" => "value_4")); //key = 4
既然已经把二维阵列宣告好了,那该如何把重复key
的value
全都印出呢?
我们用两个foreach
回圈,进到二维阵列里用if
找和key_1
相符的key
,并将其印出
如果你有学过Java或C,并且有学过如何印出九九乘法表,那恭喜你,这里的写法「本质上」就和写九九乘法表一样,差异在於多了一个if
判断式,使用的函数也不一样
PHP:
//欲印出value的key值
$searchKey = "key_1";
echo "找出key = key_1的value有哪些:<br>";
//这里只需定义value,因为我们没定义key值,所以key值会自动从0开始
//mValue = $many_array里的值
foreach ($many_array as $mValue) {
foreach ($mValue as $key => $value) {
//找出和$searchKey相同的$key值
if ($key == $searchKey) {
echo $value.'<br>';
}
}
}
结果如下图所示:
以上就是今天的介绍
我当初在学习阵列时,这个问题困扰了我好几天,因为我一直想找出能把重复key
的value
同时印出的方法
到处问到处查,最後查到「每个阵列里的key值都是唯一的,无法有两个以上的重复key」,虽然这说法是对的,但我实在是无法接受,因为我总觉得有方法能将其印出
直到我查到这个用法,才把心里的纠结解开,其实只要把一维阵列改成二维的形式就好,只是当时我没有想到二维阵列这东西,囧
参考资料:
https://stackoverflow.com/questions/5445283/how-to-allow-duplicate-keys-in-php-array
>>: [Python 爬虫这样学,一定是大拇指拉!] DAY12 - HTTP / HTTPS (3)
昨天写的小网站後续看文章时觉得有一部分JS有硬干的嫌疑(?) 所以把一些部分做了改动 首先使用了HT...
上一篇我们的基因体时代-AI, Data和生物资讯 Day15- 组装後的序列档案格式SAM, BA...
终於写完三十天,原本中途二十天就想放弃了,每天嚷嚷可不可以不要继续了。 原以为自己做的东西很多,很够...
Deadlock tags: IT铁人 介绍 Deadlock是Multi-process常产生的问...
D10: 简单的练习UVA(11805) #include <stdio.h> #inc...