如何"写"用数组的字符串文本?

时间:2017-04-22 16:32:57

标签: php arrays sorting key matching

所以我的问题可能不是最好的,所以很抱歉 我有一个包含字符串的数组,并希望在另一个数组的帮助下使用它作为顺序/键来编写文本。这是输入:

$words =["I","am","cool"];
$order =["2","0","1","0","1","2"];
//var_export($words);
// array (
//     0 => 'I',
//     1 => 'am',
//     2 => 'cool',
// )

我想使用 $ order 作为重新排列 $ words 的某种键,以便我可以获得此输出:

"Cool I am I am cool"

非常感谢帮助,谢谢:)

4 个答案:

答案 0 :(得分:1)

使用$order的值作为$words的键。

$words =["I","am","cool"];
$order =["2","0","1","0","1","2"];
$output = '';
foreach($order as $key) {
   $output .= $words[$key] . ' ';
}
echo ucfirst(trim($output));

演示:https://eval.in/780785

empty($real_key)是检查它是否是第一次迭代。也可以是== 0

答案 1 :(得分:1)

我建议使用array_mapjoin

没有必要

  • 使用foreach
  • 进行副作用手动迭代
  • if语句或三元(?:)表达式
  • 变量重新分配
  • 使用.
  • 进行字符串连接
  • 检查数组长度

我们走了

function map_indexes_to_words ($indexes, $words) {
  $lookup = function ($i) use ($words) {
    return $words[(int) $i];
  };
  return join(' ', array_map($lookup, $indexes));
}

$words = ["I","am","cool"];
$order = ["2","0","1","0","1","2"];

echo map_indexes_to_words($order, $words);
// 'cool I am I am cool'

答案 2 :(得分:0)

从一个空数组开始。 然后遍历order数组并将word array part添加到新字符串中。

$my_string= array();

    foreach ( $order as $index ) {
        $index = int($index);
        $my_string[] = ( isset($words[ $index]) ) ? $words[ $index ] : '' ); 
    }

$my_string = implode(' ', $my_string);
echo my_string;

答案 3 :(得分:0)

迭代命令并使用它的值作为单词的键;将以下代码转换为php它应该非常简单......

  foreach (string orderIndexString in order) {
    int orderIndexInt = System.Convert.ToInt16(orderIndexString); // convert string to int
    if(orderIndexInt < 0 || orderIndexInt >= words.Length)
      continue;

    print (words[orderIndexInt]);  // either print or add it to another string
  }