我有一个简单的字符串。我需要产生一个输出Array,以使每2个连续字符的顺序相反。
输入字符串是14f05000034e69
,我需要以下输出Array [4, 1, 0, f, 0, 5, 0, 0, 4, 3, 6, e, 9, 6]
。
这是我的PHP代码:
$myString = "14f05000034e69";
$myStringArray = str_split($myString);
$newArray = array();
for ($index=0; $index<count($myStringArray)-1; $index+2) {
$newArray[] = $myStringArray[$index+1];
$newArray[] = $myStringArray[$index];
}
print_r($newArray);
它给了我
致命错误:在第8行的/var/www/html/test.php中,耗尽了134217728字节的允许内存大小(试图分配134217736字节)
问题是为什么以及如何解决它?
<?php
$myString = "14f05000034e69";
$myStringArray = str_split($myString);
$i=0;
foreach($myStringArray as $row){
if(array_key_exists($i,$myStringArray)) {
$newArray[$i] = $myStringArray[$i + 1];
$newArray[$i + 1] = $myStringArray[$i];
$i = $i + 2;
}
}
echo '<pre>';
print_r($newArray);
我以一种“肮脏”的方式找到了解决方法,但是我设法做到了您的要求。
基本上,我像您一样拆分字符串,但是我围绕着新数组的位置进行游戏,并将新数组中的位置推入,这就是为什么我为此使用计数器的原因。
输出为:
Array
(
[0] => 4
[1] => 1
[2] => 0
[3] => f
[4] => 0
[5] => 5
[6] => 0
[7] => 0
[8] => 3
[9] => 0
[10] => e
[11] => 4
[12] => 9
[13] => 6
)
基本上我以为我需要将数组循环两个,但是每次循环时我都需要处理2个数组位置,然后再处理下两个数组。
因此,这导致我以$new_array
一种方式处理我,即我同时将数据推入当前位置和下一个位置,这就是为什么计数器$i+1
用于处理数组位置的原因。
如果我不在那里使用它并使用简单的方法$newArray[]
,它将把数据放到当前位置并在第二步中再次覆盖它,而且我无法将数组指针移动到位置1,3,5,6等,这就是为什么我是“强迫”它使用我的$i
计数器,所以我一直指着每个后位置。
我的$i
计数器设置在每个循环的末尾,以进行第二步。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句