1

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

$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';

我怎样才能快速轻松地做到这一点?

4

5 回答 5

2

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

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

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

于 2013-02-26T00:55:56.520 回答
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 
于 2013-02-26T00:50:10.300 回答
0

您可以使用多维数组:

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

那是你想要的吗?

于 2013-02-26T00:52:42.583 回答
0

可能与此类似。

 $countries = array($russian, $american);
   foreach($countries as $country){
     foreach($country as $flag) {
       echo $sections[$flag];
     }
}
于 2013-02-26T00:53:37.533 回答
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);
   }
}

?>
于 2013-02-26T00:57:00.880 回答