PHP如何将多维数组和单个字符串连接在一起

时间:2018-08-12 01:57:35

标签: php arrays multidimensional-array

在var_dump下找到:

Array ( [0] => Merk op dat als u verschillende verzekeringsovereenkomsten gaat vergel [1] => ijken, u niet enkel de geraamde kosten en lasten van de overeenkomsten [2] => met elkaar mag vergelijken, maar ook andere elementen in aanmerking m [3] => oet nemen, zoals de reikwijdte van de waarborgen, het bedrag van event [4] => uele franchises of de uitsluitingsclausules. De hierboven opgegeven ) Array ( [0] => ramingen geven een beter zicht op het premiegedeelte dat wordt aangewe [1] => nd voor de dekking van het risico dat door de verzekeringsovereenkomst [2] => wordt gedekt. Het saldo van de premie, na aftrek van de taksen en bij [3] => dragen alsook van de acquisitie- en administratiekosten, bestaat immer [4] => s uit het gedeelte van de premie dat wordt aangewend om de ) Array ( [0] => contractueel vastgelegde prestaties te verrichten en uit de andere kos [1] => ten dan hierboven vermeld (waaronder de samengevoegde en onderling ged [2] => eelde kosten van de schadegevallen en het beheer ervan). Deze ramingen [3] => zijn berekend op grond van de boekhoudkundige gegevens van het laatst [4] => e boekjaar van de verzekeringsonderneming, als goedgekeurd door haar ) algemene vergadering.Array ( [0] => La prime a t adapte en fonction de notre dernier tarif. Vous avez l [1] => e droit de rsilier votre contrat dans les 3 mois qui suivent cette no [2] => tification. La rsiliation se fait par lettre recommande. ) Array ( [0] => Votre attention est attire sur le fait qu'une comparaison entre plusi [1] => eurs contrats d'assurance ne doit pas se limiter comparer l'estimati [2] => on des cots et frais de chaque contrat mais doit galement prendre en [3] => considration d'autres lments, tels que l'tendue des garanties, le [4] => montant des franchises ventuelles ou les clauses d'exclusion. Les ) Array ( [0] => estimations communiques ci-dessus permettent de mieux apprcier la pa [1] => rtie de la prime qui sert couvrir le risque assur par le contrat d' [2] => assurance. Le solde de la prime, aprs dduction des taxes et contribu [3] => tions ainsi que des frais d'acquisition et d'administration, reprsent [4] => e en effet la part de la prime affecte l'excution des prestations ) Array ( [0] => contractuelles ainsi que les frais non mentionns ci-dessus (y inclus [1] => le cot mutualis des sinistres et de leur gestion). Ces estimations s [2] => ont calcules sur la base des donnes comptables du dernier exercice c [3] => omptable de l'entreprise d'assurances telles qu'approuves par son ass [4] => emble gnrale. )

如您所见,此示例将一维和多维数组组合在一起,我需要将它们放在由空格分隔的单个字符串中。

1 个答案:

答案 0 :(得分:3)

一个词,递归

function mutliImplode($glue, $pieces = ''){
    if(!is_array($pieces) && is_array($glue)){
    //compatibility with native implode where glue and piecess can be swapped
         list($glue, $pieces) = array($pieces, $glue); //swap their values
    }

    $flat = [];
    foreach($pieces as $item){
        //if it's a sub-array, call this function again with the sub-array (recursion)
        if(is_array($item)) $item = mutliImplode($glue, $item);

        $flat[] = $item;      
    }

    //by building a flat array, we can avoid having to remove extra "glue"
    //if we just concatenated $item = $item.$glue. At the end we would 
    //have an extra $glue that we would have to remove...
    return implode($glue, $flat);
}

$arr = [ 'one', ['two', 'three']];
echo mutliImplode(' ', $arr);

输出

one two three

Sandbox

如果没有“胶水”,您也可以像本机爆裂一样调用它(可以用“件”代替“胶水”,然后省略第二个参数)

mutliImplode($arr);

输出

onetwothree

或者您甚至可以交换参数,就像本机爆裂一样。尽管建议先$glue,然后再$pieces。我只是想把它当作对自己的额外挑战。

   echo mutliImplode($arr, ' ');

输出

 one two three

引用http://php.net/manual/en/function.implode.php

  

内爆-用字符串连接数组元素

     

注意:出于历史原因,implode()可以按任一顺序接受其参数。但是,为了与explode()保持一致,使用记录在文档中的参数顺序可能会造成混淆。

这当然假定您输入了一个有效的数组,它也适用于非嵌套数组,尽管比本机实现要慢一些。

干杯!