所以我的问题可能不是最好的,所以很抱歉 我有一个包含字符串的数组,并希望在另一个数组的帮助下使用它作为顺序/键来编写文本。这是输入:
$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"
非常感谢帮助,谢谢:)
答案 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));
empty($real_key)
是检查它是否是第一次迭代。也可以是== 0
。
答案 1 :(得分:1)
我建议使用array_map
和join
没有必要
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
}