在下面的代码中我得到了输出
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());
答案 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"]