【问题标题】:How do I combine these words in an array with " " in PHP?如何在 PHP 中将这些单词与“”组合在一个数组中?
【发布时间】:2009-05-29 22:38:28
【问题描述】:

我想把每个数组的[word]部分用“”组合起来,数组结构如下:

Array ( [0] => Array ( [word] => Hello [off] => 0 [len] => 5 [idf] => 4.0235948562622 [attr] => en ) [1] => Array ( [word] => , [off] => 5 [len] => 1 [idf] => 0 [attr] => un ) [2] => Array ( [word] => long [off] => 6 [len] => 4 [idf] => 3.465735912323 [attr] => en ) )

Array ( [0] => Array ( [word] => time [off] => 11 [len] => 4 [idf] => 3.465735912323 [attr] => en ) )

Array ( [0] => Array ( [word] => no [off] => 16 [len] => 2 [idf] => 1.7328679561615 [attr] => en ) )

Array ( [0] => Array ( [word] => see [off] => 19 [len] => 3 [idf] => 2.7465307712555 [attr] => en ) [1] => Array ( [word] => ! [off] => 22 [len] => 1 [idf] => 0 [attr] => un ) [2] => Array ( [word] => How [off] => 23 [len] => 3 [idf] => 2.7465307712555 [attr] => en ) )

Array ( [0] => Array ( [word] => are [off] => 27 [len] => 3 [idf] => 2.7465307712555 [attr] => en ) )

Array ( [0] => Array ( [word] => you [off] => 31 [len] => 3 [idf] => 2.7465307712555 [attr] => en ) )

Array ( [0] => Array ( [word] => recently [off] => 35 [len] => 8 [idf] => 5.1986036300659 [attr] => en ) [1] => Array ( [word] => ? [off] => 43 [len] => 1 [idf] => 0 [attr] => un ) )

有没有 PHP 的内置函数可以做到这一点?因为我认为循环的效率较低。

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    implode + array_map:

    function func($a) {
        return $a['word'];
    }
    implode(' ', array_map('func', $x));
    

    【讨论】:

    • array_map的第一个参数必须是字符串。
    • array_map 不会改变原来的数组吗?
    • 我很抱歉,似乎没有。
    • 其实这比我的回答要好——+1
    【解决方案2】:

    好吧,无论发生什么,都会发生循环,即使它是内部的。

    你可以使用 array_walk:

    $str = "";
    
    function word_append($value, $key) { 
    
       global $str;
    
       $str .= $value['word'] . " ";
    
    };
    
    array_walk($func, $array_of_words);
    

    $str 现在应该包含附加的文本。

    【讨论】:

    • 我很困惑你是指array_walk还是array_map?
    • 我很抱歉,这是一个错字,我的意思是 array_walk。已在答案中更正。
    • "会发生循环,即使它是内部的。"是的,但如果是内部的,循环可能会更快。
    猜你喜欢
    • 2012-08-20
    • 2016-08-10
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 2013-01-21
    相关资源
    最近更新 更多