我有两个阵列。
ArrayA是数字
(ArrayA => 3, 7, 8)
ArrayB是一个关联数组
(1=>bread, 2=>banana, 3=>fruit, 4=> milk, 5=>pizza, 6=> gum, 7=>corn, 8=>lager)
我想创建第三个数组ArrayC,associative,它将ArrayA的值与ArrayB键匹配,并为ArrayA键提供相关的ArrayB值。
换句话说,从这个例子
ArrayC (3 => fruit, 7=>corn, 8=>lager)
但是我的代码只给了我
ArrayC (3 => lager, 7=>lager, 8=>lager) //last value of ArrayB
代码:
$ArrayC = array();
foreach ($ArrayB as $keyB => $valueB) {
foreach ($ArrayA as $valueA) {
if ( $valueA = $keyB) {
$ArrayC [$valueA] = $valueB;
}
}
}
print_r($ArrayC);
答案 0 :(得分:1)
$common_keys = array_intersect($ArrayA, array_keys($ArrayB));
$arrayC = array();
foreach($common_keys as $key) {
$arrayC[$key] = $ArrayB[$key];
}
答案 1 :(得分:1)
你只需要一个循环:
foreach ($ArrayA as $valueA) {
$ArrayC [$valueA] = $arrayB[$valueA];
}
答案 2 :(得分:1)
$arrayC=Array()
foreach($arrayA as $valueA){
$arrayC[$valueA]=$arrayB[$valueA];
}
答案 3 :(得分:0)
您正在混合使用小写/大写变量名称。您需要使用$valueB
代替$ValueB
。
此外,在您分配的if
中,而非比较。
答案 4 :(得分:0)
如果您想在不循环播放数组的情况下执行此操作,可以尝试使用array_intersect_key()和array_flip()的组合
$ArrayA = array(3, 7, 8);
$ArrayB = array(1 => 'bread', 2 => 'banana', 3 => 'fruit',
4 => 'milk', 5 => 'pizza', 6 => 'gum', 7 => 'corn',
8 => 'lager');
$searchArray = array_flip( $ArrayA );
$results = array_intersect_key( $ArrayB, $searchArray );
var_dump( $results );
答案 5 :(得分:-1)
这是一种更好的方法:
<?php
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
print_r($c);
?>
这会给你:
Array
(
[green] => avocado
[red] => apple
[yellow] => banana
)