【问题标题】:PHP foreach Two arrays, find a value in one, use a different field in the other (add to array)PHP foreach 两个数组,在一个中找到一个值,在另一个中使用不同的字段(添加到数组中)
【发布时间】:2014-08-29 15:40:42
【问题描述】:

我完全可以被告知这是重复的。

我有一个数组,我需要在其自身中查找一个值,以将一个条目链接到另一个条目。这就是背景故事。

源数组: 数组是:

[0] => { [0] => "111", [1] => "description1", [2] => "222" }
[1] => { [0] => "222", [1] => "description2", [2] => "" }

想要的结果:
数组:

[0] => { [0] => "111", [1] => "描述", [2] => "222", [3] => "描述2" }
[1] => { [0] => "222", [1] => "description2", [2] => "" }

(其中 description2 是通过匹配“222”并返回该字段找到的。我真的不在乎是否没有匹配。)

如果我指定它,我想我可以做和查找 222 一样多的事情。我试图调用发布的力量来让我的头脑围绕链接回到所需的输出。

如何在 haystack 数组中查找一个值(来自针数组)并从该数组返回不同的 [key=>value 对]?
(是的,这在 SQL 中要容易得多。我想我想知道如何进行 JOIN)。

【问题讨论】:

  • 您提到了一个 needle and haystack 数组,建议使用 2 个单独的数组,但您的示例仅显示了一个源数组。请给出一个更详细的例子来说明你想要做什么
  • @user574632 感谢您的评论。为便于说明,请复制源数组。

标签: php arrays foreach


【解决方案1】:
$array1 = [[111,"description1",222]];
$array2 = [[222,"description2"]];
$arrayAux = [];
foreach($array1 as $arr1){
    if(is_numeric($arr1)){
        $arrayAux[] = $arr1;
    }
}
foreach($array2 as $key => $arr2){
    if(in_array($arr2, $arrayAux)){
        $array1[] = $array2[$key++];
    }
}
print_r($array1); //$array1 = [[111,"description1",222,"description2"]];

或者你可以使用array_join:http://php.net/array_merge

$array1 = array_merge($array1,$array2); //Output: [[111,"description1",222,"description2"]];

【讨论】:

  • 感谢您的回答。它可能就足够了。澄清一下,$array1 = [[111,"description1",222],[222,"description2"]] 和 $array2=$array1。
  • 将此代码放在另一个foreach中,将$array/$array2替换为foreach键/值。
【解决方案2】:

这就是我所做的:

$haystack=$array1;
foreach ($array1 as $record) {
    $needle = $record[2];
    foreach ($haystack as $stack) {
       if ($stack[0] == $needle) {
           $record[] = $stack[1];
       }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多