PHP连接跳过空值上的行
我试图连接一个数组,但当PHP遇到一个空数组项时,它会停止连接 我的数组如下所示:PHP连接跳过空值上的行,php,concatenation,Php,Concatenation,我试图连接一个数组,但当PHP遇到一个空数组项时,它会停止连接 我的数组如下所示: Array ( [0] => Array ( [0] => Test1 [1] => Test1 [2] => ) [1] => Array ( [0] => Test2 [1] => T
Array
(
[0] => Array
(
[0] => Test1
[1] => Test1
[2] =>
)
[1] => Array
(
[0] => Test2
[1] => Test2
[2] =>
)
[2] => Array
(
[0] => Test3
[1] => Test3
[2] => Test3
)
)
$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);
}
前2个数组项中的第3项为空。当我像这样绕着他们转的时候:
Array
(
[0] => Array
(
[0] => Test1
[1] => Test1
[2] =>
)
[1] => Array
(
[0] => Test2
[1] => Test2
[2] =>
)
[2] => Array
(
[0] => Test3
[1] => Test3
[2] => Test3
)
)
$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);
}
我只返回test3test3
,而不是预期的结果
Test1Test1
Test2Test2
Test3Test3Test3
因此,在连接空值时,PHP似乎跳过了项。这是正常的PHP行为吗?如果是这样,我该如何解决这个问题呢?试试这个:
$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
试试这个:
$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
试着
$uid = array();
foreach ($array as $i => $row) {
$uid[] = $row[0] . $row[1] . $row[2];
}
var_dump($uid);
只要你给它$uid
,它就把它当作一个类型变量
,它把循环的最后一次出现附加到这个变量中。如果你想要你想要的输出,你需要在之前把它声明为一个数组。试试看
$uid = array();
foreach ($array as $i => $row) {
$uid[] = $row[0] . $row[1] . $row[2];
}
var_dump($uid);
您只需给出$uid
,它将其作为类型变量
,并将循环的最后一次出现附加到该变量中。如果需要所需的输出,则需要在之前将其声明为数组
。以获得所需的输出
$uid = "";
foreach ($array as $i => $row) {
$uid .= $row[0] . $row[1] . $row[2] . "\n";
}
echo $uid;
以获得预期的输出
$uid = "";
foreach ($array as $i => $row) {
$uid .= $row[0] . $row[1] . $row[2] . "\n";
}
echo $uid;
很抱歉,如果这是您想要的输出,那么您将事情复杂化了:
$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
给出:
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
)
)
排列
(
[0]=>阵列
(
[uid]=>Test1Test1
[类型]=>Test1
[某些列]=>Test1
[其他列]=>
)
[1] =>阵列
(
[uid]=>Test2Test2
[类型]=>Test2
[some_column]=>Test2
[其他列]=>
)
[2] =>阵列
(
[uid]=>test3test3
[类型]=>Test3
[some_column]=>Test3
[其他列]=>Test3
)
)
很抱歉,如果这是您想要的输出,那么您将事情复杂化了:
$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
给出:
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
)
)
排列
(
[0]=>阵列
(
[uid]=>Test1Test1
[类型]=>Test1
[某些列]=>Test1
[其他列]=>
)
[1] =>阵列
(
[uid]=>Test2Test2
[类型]=>Test2
[some_column]=>Test2
[其他列]=>
)
[2] =>阵列
(
[uid]=>test3test3
[类型]=>Test3
[some_column]=>Test3
[其他列]=>Test3
)
)
您需要使用两个foreach
循环
程序:
初始化第一个foreach循环,将key=>值获取为内部每个数组的$key=>$value
然后将第二个循环初始化为$value
变量,因为其中的值是另一个数组key=>value
=$innerKey=>$innerValue
然后在第二个循环内echo$innerValue以显示辅助数组内的值
最后,在第一个循环中放入一个echo“
”
,将每个辅助数组放入另一个换行符中`
$data=array(
0=>数组(
0=>“Test1”,
1=>Test1,
2 => ''
),
1=>数组(
0=>“Test2”,
1=>“测试2”,
2 => ''
),
2=>数组(
0=>“Test3”,
1=>Test3',
2=>“Test3”
)
);
foreach($key=>$value形式的数据){
foreach($innerKey=>$innerValue的值){
echo$innerValue;
}
回声“
”;
}
//输出将是。。
测试1测试1
测试2测试2
测试3测试3
在以下位置测试代码:您需要使用两个foreach
循环
程序:
初始化第一个foreach循环,将key=>值获取为内部每个数组的$key=>$value
然后将第二个循环初始化为$value
变量,因为其中的值是另一个数组key=>value
=$innerKey=>$innerValue
然后在第二个循环内echo$innerValue以显示辅助数组内的值
最后,在第一个循环中放入一个echo“
”
,将每个辅助数组放入另一个换行符中`
$data=array(
0=>数组(
0=>“Test1”,
1=>Test1,
2 => ''
),
1=>数组(
0=>“Test2”,
1=>“测试2”,
2 => ''
),
2=>数组(
0=>“Test3”,
1=>Test3',
2=>“Test3”
)
);
foreach($key=>$value形式的数据){
foreach($innerKey=>$innerValue的值){
echo$innerValue;
}
回声“
”;
}
//输出将是。。
测试1测试1
测试2测试2
测试3测试3
在以下位置测试代码:您的预期输出是什么?请在下面的问题中进行测试。我希望数组的空值连接到其他值…您需要换行还是不需要换行t@DevZer0,不,不是真的。你的预期产出是多少?它在下面的问题中。我希望数组的空值连接到其他值…您需要换行还是不需要换行t@DevZer0,不,不是真的。我编辑了我的问题(我省略了一些代码以简化问题),所以这可能有助于更好地理解问题。谢谢你的努力,但不是我想要的。请参阅我在foreach
循环中编辑的问题。您的$keys
来自何处。代码中的其他地方。但是$键
很好/工作正常