我已经花了几个小时搞清楚这个,但没有任何可用的结果。 也许有人可以帮我解决这个问题,我想在课堂上使用它 我想构建一个方法,作为输入数组和输出重建数组
我有这个数组:
Array
(
[0] => Array
(
[5] => 0-5
[8] => 0-8
[9] => 0-9
[10] => 0-10
)
[10] => Array
(
[11] => 10-11
[12] => 10-12
)
[11] => Array
(
[13] => 11-13
)
[12] => Array
(
[14] => 12-14
)
)
这个数组应该转换为这个数组:
Array
(
[0] => 0-5
[1] => 0-8
[2] => 0-9
[3] => Array
(
[0] => 0-10
[1] => Array
(
[0] => 10-11
[1] => Array
(
[0] => 11-13
)
[2] => 10-12
[3] => Array
(
[0] => 12-14
)
)
)
)
EDIT1:示例的值也是数组en我想要处理一些动作。例如0-9是一个动作并停止但0-10有孩子。如果0-10结束并返回true或false,则触发下一个子节点。如果是真的10-11否则10-12。这是我第一次在这个论坛上抱歉给您带来不便
EDIT2:也许这个例子有帮助,这是JSON中发布的字符串。我在数据库中有一些规则,这将有助于为工作挑选正确的文章。
$postdata = '{"next":false,
"data":{"name":"patrick",
"etc":"etc",
"MotionDetection":"yes",
"nameOfTheRoom": ["Room1","Room2","Room3"],
"havePets":"yes"}';
Array
(
[0] => 0-5
[1] => 0-8
[2] => 0-9
[3] => Array
(
[0] => "yes" // MotionDetection
[1] => Array
(
[0] => "yes" // Have Pets
[1] => Array
(
[0] => "CountRecords" // Count nameOfTheRoom
[1] => "insertArticle A"
)
[2] => "No" // Have Pets
[3] => Array
(
[0] => "CountRecords" // Count nameOfTheRoom
[1] => "insertArticle B"
)
)
)
)
答案 0 :(得分:0)
试试这个:
function transform_arr(&$newarr, &$arr)
{
if(count($newarr) == 0)
{
if(!isset($arr[0]))
{
return;
}
$newarr = $arr[0];
}
$newarr2 = array();
$k = 0;
foreach( $newarr as $i => $value )
{
if( isset($arr[$i]) )
{
$newarr2[$k++] = $value;
$newarr2[$k++] = $arr[$i];
if(is_array($newarr2[$k - 1])) transform_arr($newarr2[$k - 1], $arr);
}
else
{
$newarr2[$k++] = $value;
}
}
$newarr = $newarr2;
}
$arr = array(
0 => array( 5=> '0-5', 8 => '0-8', 9 => '0-9', 10 => '0-10'),
10 => array( 11 => '10-11', 12 => '10-12'),
11 => array( 13 => '11-13'),
12 => array( 14 => '12-14') );
$newarr = array();
transform_arr($newarr, $arr);
var_dump($arr);
echo '<br/>';
var_dump($newarr);
结果:
[0]=> array(4) { [5]=> string(3) "0-5" [8]=> string(3) "0-8" [9]=> string(3) "0-9" [10]=> string(4) "0-10" } [10]=> array(2) { [11]=> string(5) "10-11" [12]=> string(5) "10-12" } [11]=> array(1) { [13]=> string(5) "11-13" } [12]=> array(1) { [14]=> string(5) "12-14" } } array(5) { [0]=> string(3) "0-5" [1]=> string(3) "0-8" [2]=> string(3) "0-9" [3]=> string(4) "0-10" [4]=> array(4) { [0]=> string(5) "10-11" [1]=> array(1) { [0]=> string(5) "11-13" } [2]=> string(5) "10-12" [3]=> array(1) { [0]=> string(5) "12-14" } } }