【问题标题】:PHP Merge with separatorsPHP 与分隔符合并
【发布时间】:2021-06-18 09:11:32
【问题描述】:

我正在尝试以特定方式合并两个字符串。

基本上我需要将前两个字符串合并为第三个字符串,它们之间有一个管道符号,然后用逗号分隔:

$merge1 = "id1,id2,id3"
$merge2 = "data1,data2,data3"

这两个会变成:

$merged = "id1|data1,id2|data2,id3|data3"

我希望这是有道理的?

【问题讨论】:

  • 答案在下面,但这让我毫无意义。为什么是字符串而不是数组(尤其是当您使用array 标签时)?

标签: php html arrays string


【解决方案1】:

我的意思是没有 PHP 函数可以输出你需要的东西。

产生所需输出的代码可能是

<?php

$merge1 = "id1,id2,id3";
$merge2 = "data1,data2,data3";
$merged = [];

$arr1 = explode(',', $merge1);
$arr2 = explode(',', $merge2);

foreach ($arr1 as $key => $val) {
    $merged[] =  $val . '|' . $arr2[$key];
}

echo implode(',', $merged);
// id1|data1,id2|data2,id3|data3

【讨论】:

    【解决方案2】:

    这个脚本会帮助你

    <?php
    
    $merge1 = "id1,id2,id3";
    $merge2 = "data1,data2,data3";
    
    $merge1 = explode(",", $merge1);
    $merge2 = explode(",", $merge2);
    
    $final = [];
    foreach ($merge1 as $index => $value) {
        $final[] =  $value . "|" . $merge2[$index];
    }
    
    $final = implode(",", $final);
    
    print_r($final);
    

    输出

    id1|data1,id2|data2,id3|data3
    

    【讨论】:

    • 我想知道你是否知道;如果一个数组有多个值为“0”的值,有没有办法删除它们?例如 $array = "11,84,0,0,485,103,0,0,1"; - 所以它会删除所有“0”但并非所有 0 实例,因为其中一个数字可能是“103”?
    • 您想将 103 转换为 13?
    • 不,所以 103 会保持为 0。只有只有 0 的地方才会被删除。
    • @EarlGrey:只需在 foreach 循环中添加条件 if ($value !== '0') {$final ...}
    【解决方案3】:

    试试这个。

    <?php
    
    $merge1 = "id1,id2,id3";
    $merge2 = "data1,data2,data3";
    $merge1 = explode(",",$merge1);
    $merge2 = explode(",",$merge2);
    
    
    $mergeArr = array_combine($merge1,$merge2);
    $mergeStr = [];
    foreach($mergeArr as $k => $v) {
        $mergeStr[] = $k.'|'.$v;
    }
    $mergeStr = implode(",",$mergeStr);
    echo $mergeStr;
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 2014-02-10
      • 2023-03-14
      • 1970-01-01
      • 2012-01-15
      • 2021-10-21
      • 1970-01-01
      相关资源
      最近更新 更多