PHP - 使用值超快速填充数组

时间:2013-02-26 00:45:11

标签: php arrays

好的,我需要一个像这样输出的数组:

$sections = array(
    5 => $americanFlag,
    6 => $americanFlag,
    22 => $russianFlag,
    23 => $russianFlag,
    24 => $russianFlag,
    25 => $russianFlag,
);

当然,它比这长得多。

所以,我说有一个像这样的数组:

$russian = array(22, 23, 24, 25);
$american = array(5, 6);

这样的数组:

$americanFlag = 'http://pathtomyAmericanFlag.png';
$russianFlag = 'http://pathtomyRussianFlag.png';

如何快速轻松地完成这项工作?

5 个答案:

答案 0 :(得分:2)

可能有几种方法可以做到。这是一个简单的:

$russian = array_fill_keys($russian, $russianFlag);
$american = array_fill_keys($american, $americanFlag);
$sections = ksort(array_merge($russian, $american));

假设您希望按键排序。如果没有,请删除ksort()

答案 1 :(得分:0)

$usFlags = array_combine($american, array_fill(0, count($american), $americanFlag);
$ruFlags = array_combine($russian, array_fill(0, count($russian), $russianFlag);
$sections = array_merge($usFlags, $ruFlags);

应该这样做。但是,我不知道,你想要实现什么,但似乎你要根据(我猜)某个ID来输出一个标志?

flags = array_merge(array_flip($russian), array_flip($american));
$helper = function ($id) use (flags) {
    return isset($flags[$id]) ? $flags[$id] : null;
}


echo 'http://pathtomy'. ucfirst($helper($id)) . 'Flag.png'; // returns 

答案 2 :(得分:0)

您可以使用多维数组:

array (
 american => array ( [0] => american, [1] american );
 russian => array  ( [0] => russian, [1] russian );

这就是你想要的吗?

答案 3 :(得分:0)

可能与此类似。

 $countries = array($russian, $american);
   foreach($countries as $country){
     foreach($country as $flag) {
       echo $sections[$flag];
     }
}

答案 4 :(得分:0)

试试这个

<?php

$russian = array();
$american = array();

foreach($sections as $key=>$value){
   if($value == "http://pathtomyRussianFlag.png"){
      array_push($russian, $key);
   }
   elseif($value == "http://pathtomyAmericanFlag.png"){
      array_push($american, $key);
   }
}

?>