如何将当前迭代中的数组大小与先前迭代中的数组大小进行比较

时间:2015-06-04 04:52:28

标签: php arrays multidimensional-array

$array_size在每次迭代中给出数组$expkey的数组大小。在每次迭代中,我想将当前数组大小与先前的数组大小进行比较。如何做到这一点加上第一次迭代没有prev数组大小所以它不应该给出一些偏移索引。那怎么做呢。提前谢谢你的帮助。

<?php

if (isset($_POST['submit'])) {

    unset($_POST['submit']);
    unset($_POST['ew-language__en']);

    function printxml ($array)
    {
        $xml = new DOMDocument('1.0','UTF-8');
        $xpath = new DOMXPath($xml);
        $xml->formatOutput = true;

        $last_index_ids = array();
        $parentid = array();
        $i_id=0;
        $x=0;

        foreach ($array as $key => $value)
        {

            $key = $key;
            //contains all the values of respective ids
            $attrvalue= $value;

            if ($array[$key] == "" || ctype_space($array[$key]) ) {
                $array[$key] = null;
            }
            //split unique input field names
            $expkey = explode("__", $key);

            $array_size=sizeof($expkey);

            echo"<pre>"; print_r($array_size); echo "</pre>";

            //first tag <ew-lang>
            $first_key =($expkey[0]);


            print_r($array_size);



        }
        $xml->save("file.xml");
    }
    printxml($_POST);

}
?>  

打印$array_size输出

1
1
5
5
8
8
11
11
8
8
5
5
5
5
5
5
1
1
5
5
5
5

$array

 Array
(
    [global] => global
    [ew-language__en__0__phrase__actiondeleted] => Deleted
    [ew-language__en__0__phrase__actiondeleted__0__child_phrase__1234] => numbers
    [ew-language__en__0__phrase__actiondeleted__0__child_phrase__1234__0__child_phrase_1__abc] => test
    [ew-language__en__0__phrase__actiondeleted__1__child_phrase_2__5678] => numerics
    [ew-language__en__1__phrase__actioninserted] => Inserted
    [ew-language__en__2__phrase__actioninsertedgridadd] => Inserted
    [ew-language__en__3__phrase__actionupdated] => Updated
    [project] => project
    [ew-language__en__0__phrase__actioninserted] => Inserted
    [ew-language__en__1__phrase__actioninsertedgridadd] => Inserted
)

我正在检查$expkey的数组大小

Array
(
    [0] => global
)
Array
(
    [0] => ew-language
    [1] => en
    [2] => 0
    [3] => phrase
    [4] => actiondeleted
)
Array
(
    [0] => ew-language
    [1] => en
    [2] => 0
    [3] => phrase
    [4] => actiondeleted
    [5] => 0
    [6] => child_phrase
    [7] => 1234
)
Array
(
    [0] => ew-language
    [1] => en
    [2] => 0
    [3] => phrase
    [4] => actiondeleted
    [5] => 0
    [6] => child_phrase
    [7] => 1234
    [8] => 0
    [9] => child_phrase_1
    [10] => abc
)
Array
(
    [0] => ew-language
    [1] => en
    [2] => 0
    [3] => phrase
    [4] => actiondeleted
    [5] => 1
    [6] => child_phrase_2
    [7] => 5678
)
Array
(
    [0] => ew-language
    [1] => en
    [2] => 1
    [3] => phrase
    [4] => actioninserted
)
Array
(
    [0] => ew-language
    [1] => en
    [2] => 2
    [3] => phrase
    [4] => actioninsertedgridadd
)
Array
(
    [0] => ew-language
    [1] => en
    [2] => 3
    [3] => phrase
    [4] => actionupdated
)
Array
(
    [0] => project
)
Array
(
    [0] => ew-language
    [1] => en
    [2] => 0
    [3] => phrase
    [4] => actioninserted
)
Array
(
    [0] => ew-language
    [1] => en
    [2] => 1
    [3] => phrase
    [4] => actioninsertedgridadd
)

1 个答案:

答案 0 :(得分:1)

也许在计算final($array_size)之后尝试并存储一个前后值:

<?php

    $arr[]  =   1;
    $arr[]  =   3;
    $arr[]  =   4;
    $arr[]  =   1;

    // This is just a hypothetical loop just to demonstrate concept
    // representing the loop: foreach ($array as $key => $value)
    foreach($arr as $array_size) {

            //******************************************************//
            // Do all your code that gets to to the final count here
            //******************************************************//

            $calculated =   $array_size;

            if(isset($check)) {
                    if($calculated < $check)
                        echo $calculated.' is less than '.$check;
                    else
                        echo $calculated.' is more than '.$check;

                    echo '<br />';
                }
            else
                echo $calculated.' is first'."<br />";

            $check      =   $array_size;
        }
?>

给你:

1 is first
3 is more than 1
4 is more than 3
1 is less than 4