Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP连接跳过空值上的行_Php_Concatenation - Fatal编程技术网

PHP连接跳过空值上的行

PHP连接跳过空值上的行,php,concatenation,Php,Concatenation,我试图连接一个数组,但当PHP遇到一个空数组项时,它会停止连接 我的数组如下所示: Array ( [0] => Array ( [0] => Test1 [1] => Test1 [2] => ) [1] => Array ( [0] => Test2 [1] => T

我试图连接一个数组,但当PHP遇到一个空数组项时,它会停止连接

我的数组如下所示:

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
    来自何处。代码中的其他地方。但是
    $键
    很好/工作正常