在发现数组的最终用法的同时,我感觉自己已经过去了。
我有两个数组,第一个有主键,值是附加到该键的文件数。
目标是将第一个数组的键与第二个数组中的值匹配,但仍然维护(并显示)Array-1的(值)计数 - 但仅限于第二个数组中的值。
似乎有些模糊,但这里是阵列。第二个具有应与第一个中的键匹配的值。 (我的问题是,我每次尝试都会丢失数组1的值。)
希望你能帮我解决这个问题。
(工作比赛的关键是:125,2051& 2214 )
数组1:
Array (
[6960] => 3
[2214] => 4
[2051] => 4
[6944] => 2
[6938] => 4
[1823] => 1
[766] => 6
[3993] => 4
[5896] => 6
[6927] => 2
[4220] => 3
[77] => 3
[83] => 1
[125] => 2
[6618] => 2
[196] => 1
[4072] => 12
[3718] => 1
[5918] => 1
[3388] => 10
[4500] => 13
[5968] => 2
[3000] => 2
[942] => 1
[4246] => 8
[5868] => 2
[6394] => 3
[1168] => 1
[2163] => 1
[1827] => 2
[2071] => 8
[4597] => 1
[1702] => 7
)
数组2:
Array (
[0] => 1024
[1] => 1076
[2] => 111
[3] => 124
[4] => 125
[5] => 1301
[6] => 1409
[7] => 2051
[8] => 2214
[9] => 2636
[10] => 3246
[11] => 4838
[12] => 6946
[13] => 6955
[14] => 6961
[15] => 73
[16] => 74
[17] => 8
)
答案 0 :(得分:1)
您的问题有点不清楚,但我认为这正是您所寻找的:
foreach( $array2 as $key)
{
$count = ( isset( $array1[ $key ]) ? $array1[ $key ] : 0);
echo $key . ' has ' . $count . ' files.';
}
答案 1 :(得分:1)
这样做:
<?php
$arr1 = array(1 => 1000, 500 => 1111, 1000 => 5000, 5000 => 5555);
$arr2 = array(1, 5000);
print_r(array_intersect_key($arr1, array_flip($arr2)));
输出:
(
[1] => 1000
[5000] => 5555
)
或者,使用您的数据:
<?php
$arr1 = array(6960 => 3, 2214 => 4, 2051 => 4, 6944 => 2, 6938 => 4, 1823 => 1, 766 => 6, 3993 => 4, 5896 => 6, 6927 => 2, 4220 => 3, 77 => 3, 83 => 1, 125 => 2, 6618 => 2, 196 => 1, 4072 => 12, 3718 => 1, 5918 => 1, 3388 => 10, 4500 => 13, 5968 => 2, 3000 => 2, 942 => 1, 4246 => 8, 5868 => 2, 6394 => 3, 1168 => 1, 2163 => 1, 1827 => 2, 2071 => 8, 4597 => 1, 1702 => 7);
$arr2 = array(1024, 1076, 111, 124, 125, 1301, 1409, 2051, 2214, 2636, 3246, 4838, 6946, 6955, 6961, 73, 74, 8);
print_r(array_intersect_key($arr1, array_flip($arr2)));
输出:
Array
(
[2214] => 4
[2051] => 4
[125] => 2
)
array_interset_keys
将按键找到数组的交集,而不是值。由于您的第二个数组是基于索引的数组(不是关联数组),我们需要首先使用array_flip翻转键和值。然后键可以相交。
答案 2 :(得分:0)
嗯......我似乎无法理解你想要暗示什么......但从我看到它的方式..如果你想将数组1的键作为数组2的值...只需执行此代码..
foreach($array1 as $key=>$val) {
$array2[] = $key;
}
这应该抓住array1的KEYS并将其插入到array2 []。
希望这可以帮助你..干杯:)。
答案 3 :(得分:0)
这应该打印出你需要的东西:
foreach($array2 as $key=>$val) {
echo $val;
foreach($array1 as $key2 => $val2){
if($key == $val2){
echo $val2;
}
}
echo '\n'; // new line
}