$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
)
答案 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