Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将多维数组与PHP中的另一个数组进行比较,并从多维数组中获取值_Php_Arrays - Fatal编程技术网

将多维数组与PHP中的另一个数组进行比较,并从多维数组中获取值

将多维数组与PHP中的另一个数组进行比较,并从多维数组中获取值,php,arrays,Php,Arrays,我有一个来自XML文件的多维数组,我想将其与普通数组进行比较。我需要将多维数组中的[tag]名称与另一个数组中的名称进行比较,并从属于该标记的多维数组中获取值 Array ( [0] => Array ( [tag] => DOCUMENT [type] => open [level] => 1 ) [1] => Array (

我有一个来自XML文件的多维数组,我想将其与普通数组进行比较。我需要将多维数组中的[tag]名称与另一个数组中的名称进行比较,并从属于该标记的多维数组中获取值

Array
(
    [0] => Array
        (
            [tag] => DOCUMENT
            [type] => open
            [level] => 1
        )

    [1] => Array
        (
            [tag] => SENDERID
            [type] => complete
            [level] => 2
            [value] => TEST
        )

    [2] => Array
        (
            [tag] => SENDERSHORTNAME
            [type] => complete
            [level] => 2
        )

    [3] => Array
        (
            [tag] => RECIPIENTID
            [type] => complete
            [level] => 2
            [value] => VGLEE
        )
)
第二个数组,我需要将其与多维数组进行比较:

$compare_array = array('DOCUMENT', 'SENDERID', 'SENDERSHORTNAME', 'RECIPIENTID');
现在我想检查$compare_数组中的键在多维数组中是否匹配。如果是这样,我想从多维数组中获取值,并从compare_数组中创建一个名为的变量,然后将该值附加到变量中

我做了一个for循环:

for($i = 0; $i < $count; $i++){
    if($values[$i]['tag'] == 'SENDERID'){
        $SENDER = $values[$i]['value'];
    }
    if($values[$i]['tag'] == 'RECIPIENTID'){
        $RECIPIENTID = $values[$i]['value'];
    }
    if($values[$i]['tag'] == 'IREF'){
        $IREF = $values[$i]['value'];
    }
    if($values[$i]['tag'] == 'DOCUMENTNUMBER'){
        $DOCUMENTNUMBER = $values[$i]['value'];
    }
}
($i=0;$i<$count;$i++)的
{
如果($values[$i]['tag']=='SENDERID'){
$SENDER=$values[$i]['value'];
}
如果($values[$i]['tag']=='RECIPIENTID'){
$RECIPIENTID=$values[$i]['value'];
}
如果($values[$i]['tag']=='IREF'){
$IREF=$values[$i]['value'];
}
如果($values[$i]['tag']=='DOCUMENTNUMBER'){
$DOCUMENTNUMBER=$values[$i]['value'];
}
}
尝试以下代码:

$array = []; //Complete array to be parsed.
$compare_array = array('DOCUMENT', 'SENDERID', 'SENDERSHORTNAME', 'RECIPIENTID');


foreach ($array as $value) {
    if (in_array($value["tag"], $compare_array)) {
        $$value["tag"] = $value["value"];
    }
}
它将遍历数组,如果
标记
名称与值匹配
$compare\u数组
,则用标记名定义变量并用值初始化。

尝试以下代码:

$array = []; //Complete array to be parsed.
$compare_array = array('DOCUMENT', 'SENDERID', 'SENDERSHORTNAME', 'RECIPIENTID');


foreach ($array as $value) {
    if (in_array($value["tag"], $compare_array)) {
        $$value["tag"] = $value["value"];
    }
}
它将遍历数组,如果
tag
name与value
$compare\u array
匹配,则用tag name定义一个变量并用value初始化。

您可以尝试使用array\u in()在这种情况下,下面是示例代码

for($i = 0; $i < $count; $i++){
    if(in_array($values[$i]['tag'],$compare_array)){
        $value = $values[$i]['value'];
    }

}
($i=0;$i<$count;$i++)的
{
if(在_数组中($values[$i]['tag'],$compare_数组)){
$value=$values[$i]['value'];
}
}
作为参考

您可以尝试使用array_in()在本例中,下面是示例代码

for($i = 0; $i < $count; $i++){
    if(in_array($values[$i]['tag'],$compare_array)){
        $value = $values[$i]['value'];
    }

}
($i=0;$i<$count;$i++)的
{
if(在_数组中($values[$i]['tag'],$compare_数组)){
$value=$values[$i]['value'];
}
}

作为示例数据的参考

,您可以使用和用于检查
标记
是否存在于
$compare\u数组中

如果必须使用
$compare\u数组
中的名称创建一个变量,并将该值附加到变量,则可以使用符合预期的标志

值不存在于所有示例数据中,因此您还可以检查是否存在该值

$compare_array = array('DOCUMENT', 'SENDERID', 'SENDERSHORTNAME', 'RECIPIENTID');
$result = array_reduce($arrays, function($carry, $item) use ($compare_array) {
    if(isset($item["value"]) && in_array($item["tag"], $compare_array, true)) {
        $carry[$item["tag"]] = $item["value"];
    }
    return $carry;
});
extract($result, EXTR_OVERWRITE);

echo $SENDERID;
echo $RECIPIENTID;

对于示例数据,您可以使用和来检查
标记
是否存在于
$compare\u数组中

如果必须使用
$compare\u数组
中的名称创建一个变量,并将该值附加到变量,则可以使用符合预期的标志

值不存在于所有示例数据中,因此您还可以检查是否存在该值

$compare_array = array('DOCUMENT', 'SENDERID', 'SENDERSHORTNAME', 'RECIPIENTID');
$result = array_reduce($arrays, function($carry, $item) use ($compare_array) {
    if(isset($item["value"]) && in_array($item["tag"], $compare_array, true)) {
        $carry[$item["tag"]] = $item["value"];
    }
    return $carry;
});
extract($result, EXTR_OVERWRITE);

echo $SENDERID;
echo $RECIPIENTID;

您的试用期在哪里?您可以使用foreach和if@Ghost见更新的问题。这是我第一次做的,但我认为一定有一个更简单的方法。我不知道为什么你会需要这样的东西,但是,你可能会使用变量来实现所有目的,但我建议用标签来分组,将它们保留为一个数组,但使用标记作为keys@Ghost从XML文件中我得到了61个键,我需要一部分键+值。这就是为什么我要列出一个清单并进行比较。如果列表更改,我可以动态地进行更改。它仍然可以工作,如果它们被分组在一个数组中,只要它们有相同的标记,你就可以推送它们,你的测试在哪里?您可以使用foreach和if@Ghost见更新的问题。这是我第一次做的,但我认为一定有一个更简单的方法。我不知道为什么你会需要这样的东西,但是,你可能会使用变量来实现所有目的,但我建议用标签来分组,将它们保留为一个数组,但使用标记作为keys@Ghost从XML文件中我得到了61个键,我需要一部分键+值。这就是为什么我要列出一个清单并进行比较。如果列表更改,我可以动态地进行更改。它仍然可以工作,如果它们被分组在一个数组中,只要它们具有相同的标记,您就可以推送它们,谢谢您的回答。这就是我要找的。为了更好地理解文档,我必须更深入地了解它,但是您在这方面帮了我很多。我要感谢所有其他人的帮助。我还有一个问题。我的数组有索引,但在您的示例中,数组没有索引。如何制作相同的数组?我必须取消设置吗?如果您是指原始数组中的0、1、2和3,它们仍然存在。0是第一项,然后是1等。您可以阅读和索引。谢谢您的回答。这就是我要找的。为了更好地理解文档,我必须更深入地了解它,但是您在这方面帮了我很多。我要感谢所有其他人的帮助。我还有一个问题。我的数组有索引,但在您的示例中,数组没有索引。如何制作相同的数组?我必须取消设置吗?如果您是指原始数组中的0、1、2和3,它们仍然存在。0是第一项,然后是1等。您可以阅读和索引。