【问题标题】:php get string from array elements and concatenate into new array elementphp从数组元素中获取字符串并连接成新的数组元素
【发布时间】:2017-11-27 03:04:51
【问题描述】:

我正在尝试根据位置返回数组字符串,连接并追加到一个新数组中。

$matches = ([0] => 20170623 004129 982 a [4] => 20170623 004130 982 b [8] => 
            20170623 004130 982 b)
foreach ($matches as $match){
    $arr2 = explode(" ", $match);
    echo $arr2[0] . $arr2[1] . $arr2[2];

for循环用于explode,可以看到数组的每个元素(字符串)被分离成一个新的数组$arr2,但每个循环都会覆盖$arr2。 我的回声多次返回相同的结果(最后一次传递的结果)。看起来每次通过一次。

预期输出,可能类似于:

$arr3 = ([0] => 20170623004129982 [1] => 20170623004130982 [3] => 
            20170623004130982)

【问题讨论】:

  • 我们能否看到一些数据、当前输出和预期输出?

标签: php arrays foreach explode


【解决方案1】:

在 foreach 之上创建一个数组,因此它不会在每次迭代时重新初始化,并在其中添加每次迭代的值

$arr=[];
foreach ($matches as $match){
    $arr2 = explode(" ", $match);
    array_push($arr,array_map(function($arr2){
         return $arr2;
    },$arr2));
    echo "<pre>";print_r($arr);
}

【讨论】:

    【解决方案2】:

    你需要array_push()

    你的情况

    <?php
        $arr2 = [];
        foreach ($matches as $match) {
            $values = explode(" ", $match);
            array_push($arr2, $values[0], $values[1], $values[2]);   
        }
    
        var_dump($arr2); // now $arr2 should contain all values
    ?>
    

    【讨论】:

    • 它将推送整个数组,而不是数组值
    • @RAUSHANKUMAR 感谢您的评论!更新了答案
    • 添加索引1
    • 没关系,最好用静态数据运行你的代码,然后在这里回答,对别人有帮助
    • 这会将所有内容连接成一个长数组。所以我得到... [0]=> string(8) "20170623" [1]=> string(6) "004129" [2]=> string(8) "20170623" [3]=> string(6 ) "004129" [4]=> 字符串(3) "982" [5]=> 字符串(8) "20170623" [6]=> 字符串(6) "004129" [7]=> 字符串(3) " 982" 见上面我的预期结果:$arr3 = ([0] => 20170623004129982 [1] => 20170623004130982 [3] => 20170623004130982)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2013-02-04
    • 2019-03-09
    相关资源
    最近更新 更多