Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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_Arrays - Fatal编程技术网

在PHP中,这是否可能用于组合两个数组?

在PHP中,这是否可能用于组合两个数组?,php,arrays,Php,Arrays,我有两个签名和名称。名称数组有分隔符|,表示1个签名人有2个名称。我想输出元素在分隔符中是否有2个值,在其他数组中是否有1个值。它将生成另一个副本或克隆。像这样 $signatories = array('Allan','Robert','Maria'); $designations = array('CEO','CEO|COO','MANAGER|OIC|COO'); 我的预期产出: Allan - CEO Robert - CEO Robert - COO Maria - MANAG

我有两个签名和名称。名称数组有分隔符|,表示1个签名人有2个名称。我想输出元素在分隔符中是否有2个值,在其他数组中是否有1个值。它将生成另一个副本或克隆。像这样

$signatories = array('Allan','Robert','Maria');

$designations = array('CEO','CEO|COO','MANAGER|OIC|COO');
我的预期产出:

Allan - CEO

Robert - CEO
Robert - COO

Maria - MANAGER
Maria - OIC
Maria- COO

您需要两个循环,并且可以使用相同的索引

$signatories = array('Allan|Joshua|Ronald', 'Robert|Mellisa', 'Maria');
$designations = array('CEO','CEO|COO','MANAGER|OIC|COO');

$cs = count($signatories);
for ($i=0; $i<$cs; $i++) {
  $desigs = explode('|', $designations[$i]);
  $signas = explode('|', $signatories[$i]);
  foreach ($desigs as &$desig) {
    foreach ($signas as &$signa) {
      echo $signa.' - '.$desig.'<br>';
    }
  }
}

使用foreach循环和explode函数,您可以在单个数组中组合这两个数组

    $signatories = array('Allan','Robert','Maria');

    $designations = array('CEO','CEO|COO','MANAGER|OIC|COO');

    $combinedArray = array();
    foreach($signatories as $key => $value){
        $combinedArray[] = array('name' => $value, 'designations' => explode("|",$designations[$key]));
    }
    print_r($combinedArray);die;
$combinedArray数组具有名称和指定数组

此数组的输出-

    Array
(
    [0] => Array
        (
            [name] => Allan
            [designations] => Array
                (
                    [0] => CEO
                )

        )

    [1] => Array
        (
            [name] => Robert
            [designations] => Array
                (
                    [0] => CEO
                    [1] => COO
                )

        )

    [2] => Array
        (
            [name] => Maria
            [designations] => Array
                (
                    [0] => MANAGER
                    [1] => OIC
                    [2] => COO
                )

        )

)

有点乱,但是有一个环

<?php

$signatories = array('Allan','Robert','Maria');
$designations = array('CEO','CEO|COO','MANAGER|OIC|COO');

$i = 0;
foreach($designations as $designation) {

    $newArr = explode('|',$designation);
    echo $signatories[$i].' - '.implode('<br>'.$signatories[$i].' - ',$newArr).'<br><br>';

$i++;
}
另一方面,

$signatories = array('Allan','Robert','Maria');
$designations = array('CEO','CEO|COO','MANAGER|OIC|COO');


foreach($signatories as $key=>$val)
{  
   $exp = explode('|',$designations[$key]);
    foreach($exp as $dsg)
    {
        echo $val.' - '.$dsg;
        echo "<br>";
    }
    echo "<br>";
}

如果您可以控制iti,那么更改源数据是明智的。我想指出的是,虽然在单个循环中执行此操作是一个很酷的技巧,但现在您将失去执行任何类型的验证或更改的能力,并且使您的代码更简洁、更难理解。维护代码的成本通常比实际生活中从未发挥作用的微小性能提升更昂贵。foreach和for,为什么有两个不同的循环?不要将count作为for循环中的第二个参数,而是在每个loop@dagon我避免使用双引号,因为双引号中没有嵌入变量,因此性能优势就不存在。我会记住你写的东西,谢谢。@webjujuju你好,先生,我喜欢输出,我有我这个问题的第二部分。。你能帮助我,如何执行这个吗?thanks@dafnycruz我已经为另一个分解操作更新了它,该操作解释了dagon的答案,即为什么我们使代码易于编辑两个foreach循环中的&writeback的目的是什么?您可以使用array\u combine函数,然后通过管道符号分解元素。是的,我们可以使用array_combine,但至少需要一个循环来连接两个数组。这就是我使用循环的原因。
Allan - CEO

Robert - CEO
Robert - COO

Maria - MANAGER
Maria - OIC
Maria - COO