这是我分割字符串的小程序,所以这是有效的,因为我使用HEREDOC
来分隔字符串,现在我想以数组的形式使用它来攻击我,< / p>
<?php
$str = <<<EOD
2
3
1 2 3
4
2 1 3 1
EOD;
所以在这里你可以看到我使用heredoc
来创建一个字符串。基本上我想做的是,我希望以类似
在字符串中,以2
开头,该3
是包含两个子数组的数组的大小,即4
和1 2 3
以及 3 内的{{1}并且在 4 中是2 1 3 1
,现在我想以数组的形式访问它们,这样我就可以做一些算术求和。
答案 0 :(得分:0)
试试这段代码。
我在代码中添加了一些注释 编辑支持一种尺寸的子阵列。
$str = <<<EOD
4
3
1 2 3
4
2 1 3 1
2
2 1
1
2
EOD;
$arr = explode(PHP_EOL, $str); // explode on new line
$item = 0;
$header =0;
foreach($arr as $key => $val){
if($key == 0){
$items = $val; // how large is the final array supposed to be?
$res = range(0,$val-1); // create an array with final size with dummy values
}elseif ($key % 2 != 0) { //not even number meaning it is "header" for subarray
if($header == 0) echo "Header: OK\n"; // is the PREVIOUS subarray correct size? error checking
$header = $val; // save value of subarray size
}else{
$res[$item] = explode(" ", $val); // explode the value and place it in result array $item key
$header = $header - count($res[$item]); // subtract the number of items in subarray from $header, this is error checking
$item++; // add to counter
}
}
if($item == $items) echo "Complete array: OK\n"; // error checking make sure final array is correct size
var_dump($res);
您可以在此处进行测试:https://3v4l.org/kENmb
答案 1 :(得分:-1)
所以最后我得到了答案。检查一下...... !!!
<?php
$str=<<<EOD
2
3
1 2 3
4
2 1 3 1
EOD;
$input = trim($str);
$raw_data=explode(PHP_EOL,$input);
$T = (int)$raw_data[0]*2;
$test_cases=[];
for($i=1;$i<=$T;$i+=2) {
$local=[];
$local[]=(int)$raw_data[$i];
$local[]=explode(' ',$raw_data[$i+1]);
$test_cases[]=$local;
}
function prefix($n,$index) {
$total=0;
for($i=0;$i<$index;$i++) {
$total += $n[$i];
}
return $total;
}
function suffix($p,$index) {
$total=0;
for($i=(count($p)-1);$i>=$index-1;$i--) {
$total += $p[$i];
}
return $total;
}
for($i=0;$i<count($test_cases);$i++) {
$temp = NULL;
$temp_index = NULL;
for($j=1;$j<=$test_cases[$i][0];$j++) {
$sum = prefix($test_cases[$i][1], $j) + suffix($test_cases[$i][1], $j);
if($temp) {
if($temp > $sum) {
$temp = $sum;
$temp_index = $j;
}
} else {
$temp_index = $j;
$temp = $sum;
}
}
var_dump($temp,$temp_index);
}