Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 比较2个数组并突出显示差异_Php_Mysql_Arrays - Fatal编程技术网

Php 比较2个数组并突出显示差异

Php 比较2个数组并突出显示差异,php,mysql,arrays,Php,Mysql,Arrays,我需要一些帮助来解决我遇到的问题。我有一个顺序系统,每个顺序可以有多个阶段。可以更改、删除阶段,也可以创建新阶段 当一个阶段被更改时,我需要输出新的数据和旧的数据,并将其放入邮件中,并且必须突出显示更改。除此之外,阶段必须在日期之后,而不是按id或阶段编号进行排序。这意味着,如果日期是第一个即将到来的日期,则可以将新阶段(如阶段6)置于顶部 我的问题是我能正确地进行比较 数据来自MySQL,之后在PHP中使用。我将数据放在数组中(旧数据、新数据),如下所示: 旧数据: Array ( [0] =

我需要一些帮助来解决我遇到的问题。我有一个顺序系统,每个顺序可以有多个阶段。可以更改、删除阶段,也可以创建新阶段

当一个阶段被更改时,我需要输出新的数据和旧的数据,并将其放入邮件中,并且必须突出显示更改。除此之外,阶段必须在日期之后,而不是按id或阶段编号进行排序。这意味着,如果日期是第一个即将到来的日期,则可以将新阶段(如阶段6)置于顶部

我的问题是我能正确地进行比较

数据来自MySQL,之后在PHP中使用。我将数据放在数组中(旧数据、新数据),如下所示:

旧数据:

Array (
[0] => Array
    (
        [id] => 3164
        [opr_etape_id] => 307
        [kg] => 35360
        [stålpris] => 369512
        [timer] => 300
        [levuge] => 2
        [etape] => 1
        [ordrenr] => 
        [rev] => 
    )

[1] => Array
    (
        [id] => 3165
        [opr_etape_id] => 308
        [kg] => 18535
        [stålpris] => 193690
        [timer] => 100
        [levuge] => 23
        [etape] => 2
        [ordrenr] => 
        [rev] => 
    )

[2] => Array
    (
        [id] => 3163
        [opr_etape_id] => 3113
        [kg] => 500
        [stålpris] => 5000
        [timer] => 0
        [levuge] => 27
        [etape] => 3
        [ordrenr] => 
        [rev] => 
    )

[3] => Array
    (
        [id] => 3162
        [opr_etape_id] => 3122
        [kg] => 40
        [stålpris] => 1000
        [timer] => 0
        [levuge] => 50
        [etape] => 4
        [ordrenr] => 
        [rev] => 
    )
)
新数据:

Array(
[0] => Array
    (
        [eId] => 3169
        [id] => 10610
        [opr_etape_id] => 307
        [kg] => 35360
        [stålpris] => 369512
        [timer] => 300
        [levuge] => 2
        [etape] => 1
        [ordrenr] => 49540
        [rev] => 0
    )

[1] => Array
    (
        [eId] => 3170
        [id] => 10610
        [opr_etape_id] => 308
        [kg] => 18535
        [stålpris] => 193690
        [timer] => 100
        [levuge] => 23
        [etape] => 2
        [ordrenr] => 49540
        [rev] => 0
    )

[2] => Array
    (
        [eId] => 3168
        [id] => 10610
        [opr_etape_id] => 3113
        [kg] => 500
        [stålpris] => 5000
        [timer] => 0
        [levuge] => 27
        [etape] => 3
        [ordrenr] => 49540
        [rev] => 0
    )

[3] => Array
    (
        [eId] => 3166
        [id] => 10610
        [opr_etape_id] => 3166
        [kg] => 1000
        [stålpris] => 50000
        [timer] => 0
        [levuge] => 41
        [etape] => 5
        [ordrenr] => 49540
        [rev] => 0
    )

[4] => Array
    (
        [eId] => 3167
        [id] => 10610
        [opr_etape_id] => 3122
        [kg] => 40
        [stålpris] => 1000
        [timer] => 0
        [levuge] => 50
        [etape] => 4
        [ordrenr] => 49540
        [rev] => 0
    )
)
如何比较这些,以便将新阶段([etape]=>5)识别为新阶段,并保持[etape]=>4的比较

基本上我需要这个

新旧数据

11

2.2

3 3


5您是否尝试使用
array_diff(array$array1,array$array2[,array$…])

现在我想到了这个

$typer = array("kg", "stålpris", "timer", "levuge");
$nye_nøgler = array_keys($nye_værdier);
$gml_nøgler = array_keys($gml_værdier);

foreach ($nye_nøgler as $ky){
    $besked .= "<tr>";
    $besked .= "<td>Etape ".$nye_værdier[$ky]['etape']."</td>";
    foreach ($gml_nøgler as $gy) {
        for ($k = 0; $k < sizeof($typer); $k++) {
            if (in_array($nye_værdier[$ky][$typer[$k]], $gml_værdier[$gy])){
                $besked .=  "<td align='center'>".number_format($nye_værdier[$ky][$typer[$k]], 0, ',', '.') ."</td>";
            } else {
                $besked .=  "<td align='center'><b><font color='red'>". number_format($nye_værdier[$ky][$typer[$k]], 0, ',', '.') ."</font></b></td>";
            }
        }
    }
    $besked .= "</tr>";
}

$besked .= "</table>";

echo $besked;
$typer=数组(“kg”、“stålpris”、“timer”、“levuge”);
$nye_nøgler=数组键($nye_værdier);
$gml_nøgler=数组密钥($gml_værdier);
foreach($nye_ønøgler作为$ky){
$besced.=”;
$besked.=“Etape”。$nye_værdier[$ky]['Etape']。”;
foreach($gml_øgler作为$gy){
对于($k=0;$k
它正在到达那里,但它输出数据的时间与$gml_ønøgler中的数据相同。
我这样做是因为我需要获得$gml_ønøgler中的数据,以便检查数据是否已更改。有没有更聪明的方法来做到这一点,这样我只会将数据取出一次?

我想我自己现在已经找到了解决方案。只是看不见树林,看不见树木

在新的stages上,我有一个对旧stages id的引用。如果我使用它来固定旧dataarray中的精确索引,似乎我得到了正确的输出。我只需要再测试一下,但代码如下:

$typer = array("kg", "stålpris", "timer", "levuge");
$nye_nøgler = array_keys($nye_værdier);
$gml_nøgler = array_keys($gml_værdier);

foreach ($nye_nøgler as $ky){
    $message .= "<tr>";//<td>".$nye_værdier[$i][ordrenr]." R".$nye_værdier[$i][rev]."</td>";
    $message .= "<td>Etape ".$nye_værdier[$ky]['etape']."</td>";
    for ($k = 0; $k < sizeof($typer); $k++) {
        if ($nye_værdier[$ky][$typer[$k]] == $gml_værdier[$nye_værdier[$ky]['opr_etape_id']][$typer[$k]]) {//Bruger opr_etape_id fra den nye etape til at finde den gamles værdier med
                $message .=  "<td align='center'>".number_format($nye_værdier[$ky][$typer[$k]], 0, ',', '.') ."</td>";
        } else {
                $message .=  "<td align='center'><b><font color='red'>".number_format($nye_værdier[$ky][$typer[$k]], 0, ',', '.')."</font></b></td>";
        }
    }
    $message .= "</tr>";
}
$message .= "</table>";
$typer=数组(“kg”、“stålpris”、“timer”、“levuge”);
$nye_nøgler=数组键($nye_værdier);
$gml_nøgler=数组密钥($gml_værdier);
foreach($nye_ønøgler作为$ky){
$message.=“;/”$nye_værdier[$i][ordrenr]。“R.$nye_værdier[$i][rev]。”;
$message.=“Etape”。$nye_værdier[$ky]['Etape']”;
对于($k=0;$k
采用哪种技术?数组看起来像是
PHP
中的
var_dump
的输出。请验证这一点,并在问题中添加正确的标记以帮助我们回答它。仍在尝试了解您想要什么输出ps,很抱歉,当我发布它时,工作被中断,因此没有及时获得它。它是在PHP中,数据来自MySQLYes,但我没有得到我想要的差异。我得到了两个不同的,尽管只有一个被更改。但是更改的一个,在最后一个之前,所以我猜数组_diff()我的问题是,我不仅仅想要差异。我想要新数组中的所有内容,但我需要突出显示差异。不是数组索引中的差异,而是数组值中的差异。这是我无法理解的,需要帮助。嗯,我对这个论坛还不满意。为什么不发布这个最后?