PHP循环生成指定结构数组用于CSV导出的问题求助
解决方案:生成符合要求的成对数组结构
我明白你的需求:你需要生成一个数组,其中每两个元素为一组,每组内的元素拥有相同的a和b值,c值分别为1和2,同时对应不同的用户标识。你当前的代码问题在于把每一对子数组包裹成了一个新数组再存入结果,导致最终结构不符合预期。
下面分两种场景给出修正后的代码:
场景1:生成索引形式的数组(和你代码的写法匹配)
如果你希望得到和代码里类似的索引数组(每个子数组的元素对应a、b、c、d的值),只需要把每一对里的两个子数组分别添加到结果数组中,而不是把它们作为一个整体push:
$results = array(); for($i = 1 ; $i <= 10 ; $i++){ $j = $i + 1; // 把第一个子数组直接加入结果 array_push($results, array( $i, $i, 1, "user".$i )); // 把第二个子数组直接加入结果 array_push($results, array( $i, $i, 2, "user".$j )); }
这样生成的$results结构会和你给出的示例一致:
array( 0 => array(1, 1, 1, "user1"), 1 => array(1, 1, 2, "user2"), 2 => array(2, 2, 1, "user3"), 3 => array(2, 2, 2, "user4"), // ... 后续到i=10的元素 )
场景2:生成关联形式的数组(和你示例的键名匹配)
如果你希望每个子数组使用a、b、c、d作为键名(和你最开始给出的示例结构一致),可以修改代码为:
$results = array(); for($i = 1 ; $i <= 10 ; $i++){ $j = $i + 1; array_push($results, array( "a" => $i, "b" => $i, "c" => 1, "d" => "user".$i )); array_push($results, array( "a" => $i, "b" => $i, "c" => 2, "d" => "user".$j )); }
这样生成的数组结构就完全符合你给出的示例样式了:
array( 0 => array("a"=>1, "b"=>1, "c"=>1, "d"=>"user1"), 1 => array("a"=>1, "b"=>1, "c"=>2, "d"=>"user2"), 2 => array("a"=>2, "b"=>2, "c"=>1, "d"=>"user3"), 3 => array("a"=>2, "b"=>2, "c"=>2, "d"=>"user4"), // ... 后续元素 )
额外说明
如果你确实需要把每一对数组作为一个子组(比如结果是二维数组,每个元素是一对数组),那你的原代码结构是对的,但可能不符合你示例里的展示形式。如果是这种情况,你可以保留原代码的结构,只是确认是否是你需要的分组方式。
内容的提问来源于stack exchange,提问作者Hendry Putra
相关产品推荐
相关产品推荐

