我正在尝试连接一个数组,但是当PHP遇到一个空数组项时,它会停止连接。
我的数组看起来像这样:
Array
(
[0] => Array
(
[0] => Test1
[1] => Test1
[2] =>
)
[1] => Array
(
[0] => Test2
[1] => Test2
[2] =>
)
[2] => Array
(
[0] => Test3
[1] => Test3
[2] => Test3
)
)
前两个Array-item上的第3项是空的。当我像这样循环它们时:
$keys = array('uid', 'type', 'some_column', 'other_column');
foreach ($csv as $i => $row) {
$uid = $row[0] . $row[1] . $row[2];
array_unshift($row, $uid);
$csv[$i] = array_combine($keys, $row);
}
我只返回Test3Test3Test3
,而不是预期的
Test1Test1
Test2Test2
Test3Test3Test3
因此,当连接空值时,PHP似乎正在跳过项目 这是正常的PHP行为吗?如果是这样,我该如何解决这个问题?
答案 0 :(得分:1)
试试这个:
$uid = array();
foreach ($array as $i => $row) {
$uid[] = $row[0] . $row[1] . $row[2];
}
var_dump($uid);
输出:
Array
(
[0] => Test1Test1
[1] => Test2Test2
[2] => Test3Test3Test3
)
您可以执行类似的操作来生成字符串:
$uid = '';
foreach ($arr as $i => $row) {
$uid .= $row[0] . $row[1] . $row[2] . "\n";
}
echo $uid;
输出:
Test1Test1
Test2Test2
Test3Test3Test3
答案 1 :(得分:1)
尝试
$uid = array();
foreach ($array as $i => $row) {
$uid[] = $row[0] . $row[1] . $row[2];
}
var_dump($uid);
只是您正在提供$uid
并将其作为variable
类型,并将最后一次出现的循环追加到该变量中。如果您需要所需的输出你需要在之前将它声明为array
。
答案 2 :(得分:1)
对不起,但是如果 是你想要的输出,你就会过度复杂化:
$foo = array(
array("Test1","Test1"),
array("Test2","Test2"),
array("Test3","Test3","Test3")
);
echo implode(PHP_EOL,
//implode all child arrays, by mapping, passes no delimiter
//behaves as concatenation
array_map('implode',$foo)
);
返回:
Test1Test1 Test2Test2 Test3Test3Test3
在您的情况下,您可以像这样使用此代码的位:
$csv = array(array("Test1","Test1",''),array("Test2","Test2",''),array("Test3","Test3","Test3"));
$keys = array('uid', 'type', 'some_column', 'other_column');
foreach($csv as $k => $row)
{
array_unshift($row,implode('',$row));
$csv[$k] = array_combine($keys,$row);
}
给出:
Array ( [0] => Array ( [uid] => Test1Test1 [type] => Test1 [some_column] => Test1 [other_column] => ) [1] => Array ( [uid] => Test2Test2 [type] => Test2 [some_column] => Test2 [other_column] => ) [2] => Array ( [uid] => Test3Test3Test3 [type] => Test3 [some_column] => Test3 [other_column] => Test3 ) )
答案 3 :(得分:0)
获得预期的输出
$uid = "";
foreach ($array as $i => $row) {
$uid .= $row[0] . $row[1] . $row[2] . "\n";
}
echo $uid;
答案 4 :(得分:0)
您需要使用两个foreach
循环..
步骤:
key => value as $key=> $value
。$value
变量,因为此内部的值是另一个数组key => value
= $innerKey => $innerValue
。echo '<br/>'
,将每个辅助数组放入另一个换行符。
$data = array(
0 => array(
0 => 'Test1',
1 => 'Test1',
2 => ''
),
1 => array(
0 => 'Test2',
1 => 'Test2',
2 => ''
),
2 => array(
0 => 'Test3',
1 => 'Test3',
2 => 'Test3'
)
);
foreach($data as $key => $value){
foreach($value as $innerKey => $innerValue){
echo $innerValue;
}
echo '<br/>';
}
// Output would be..
Test1Test1
Test2Test2
Test3Test3Test3
代码测试时间:PHP Fiddle