爆炸时打印阵列

时间:2016-10-30 17:00:20

标签: php

在下面的代码中我得到了输出

Array ( [0] => 1 [1] => 2 [2] => 3) Array ( [0] => 1 [1] => 2 )

但预期的输出是

    <?php 
$test_arr=array();
$temp_option_arr=array();
$option_arr=array();

$options_array_val = Array ( 0 => "animals:1", 1 => "animals:2", 2 => "animals:3", 3 => "birds:1", 4 => "birds:2" );

    foreach($options_array_val as $options_val)
    {
        $search_filter = explode(":", $options_val);
        print_r($search_filter);
        if(!in_array($search_filter[0],$option_arr))
        {
            array_push($temp_option_arr,$search_filter[1]);
            array_push($option_arr,$search_filter[0]);
            $temp_option_arr=array();

        }
        array_push($temp_option_arr,$search_filter[1]);
    }
    $test_arr[$search_filter[0]]=$temp_option_arr;
    $find_species = array();
    if(!empty($test_arr['animals']))
    {

        $find_species = $test_arr['animals'];
        print_r($find_species);

    }

    if(!empty($test_arr['birds']))
    {

        $find_species = $test_arr['birds'];
        print_r($find_species);
    }

?>     

为什么总是执行第二个条件?虽然第一个条件也是如此。 这是我试过的代码

URLClassLoader driverLoader = new URLClassLoader(classpath, ClassLoader.getSystemClassLoader());

2 个答案:

答案 0 :(得分:0)

该行

answer = raw_input("Do you prefer eating {} or {}?".format(p, t))

超出了foreach范围,因此它只为鸟类而不是动物设置数组,所以你需要将它移动一行。

此外,您将temp_option_arr指定为值

$test_arr[$search_filter[0]]=$temp_option_arr;

然后将其设置回空数组而不使用它

array_push($temp_option_arr,$search_filter[1]);

你可以删除我猜的第一个

答案 1 :(得分:0)

您在代码的第一部分清除了if(current < next),因此当您退出第一个循环时,它将没有任何关于 animals 的内容。

但是不是使用所有这些不同的数组,只需构建一个由物种(动物,鸟类......)键入的关联数组,并使用ID数组(1,2,3,......)作为值。 ,$temp_option_arr之后的部分:

:

在此循环之后,foreach($options_array_val as $options_val) { list($species, $id) = explode(":", $options_val); $option_arr[$species][] = $id; } 的结构是:

$option_arr

我认为你可以用你想做的事。例如,只获得动物:

Array (
    "animals" => Array (1, 2, 3)
    "birds" => Array (1, 2)
)

是:

$option_arr["animals"]