Замените ключи массива (цикл foreach), которые соответствуют другому массиву - PullRequest
0 голосов
/ 08 августа 2011

У меня есть результаты опроса, хранящиеся в базе данных mysql.
Я пытаюсь вывести результаты, которые идут хорошо, но теперь я пытаюсь получить результат в порядке убывания (самый высокий в первую очередь) и с правильным именем. Теперь вывод выглядит так:

<code>print "<pre>";
print_r(array_count_values($array_a));
print "
"; // ВЫХОДЫ: первый ключ - это опция опроса, а второй - то, за что за него проголосовали. [4] => 1 [12] => 17 [2] => 3 [6] => 42 [8] => 6 [16] => 5 [3] => 30 [18] => 1 [1] => 5

Сначала я хотел бы заменить цифры на имя. Вот где я застрял. str_replace не работает, потому что он заменяет все совпадающие числа, но не точное число. Циклы foreach делают все правильно, но необходимо заменить 17 чисел, поэтому я хотел бы использовать массив для их получения, но не знаю как.

foreach($array_a as &$value){
    if($value==1){
        $value = "opt1";
    }
}  

$patterns = array();
$patterns[0] = '1';
$patterns[1] = '2';
$patterns[2] = '3';
$patterns[3] = '4';

$replacements = array();
$replacements[0] = 'Car';
$replacements[1] = 'Boat';
$replacements[2] = 'Bike';
$replacements[3] = 'Photo';

Результат, которого я хотел бы достичь:

 //OUTPUT
[Car] => 30
[Bike] => 25
[Paint] => 10
[Goat] => 5
[Photo] => 3

1 Ответ

0 голосов
/ 08 августа 2011

Как насчет:

<code>$replacements = array();
$replacements[2] = 'Car';   // your key should be the key of $array_a here and 
$replacements[1] = 'Boat';  // value should be the key you want to be used
$replacements[5] = 'Bike';
$replacements[3] = 'Photo';


$finalPollArray = array();

foreach($replacements as $key => $value)
{
    $finalPollArray[$value] = $array_a[$key];
}  

$finalPollArray = asort($finalPollArray)

print "<pre>";
print_r($finalPollArray);
print "
";

Очень практичный пример:

<code>$poll[5] = 13;
$poll[6] = 12;
$poll[3] = 10;
$poll[12] = 7;
$poll[8] = 6;
$poll[1] = 5;
$poll[7] = 5;
$poll[16] = 5;
$poll[13] = 4;

 // with this code I get the following output
$replacements = array();
$replacements[5] = 'Car';

$finalPollArrayA = array();

 foreach($replacements as $key => $value)
 {
     $finalPollArrayA[$value] = $poll[$key];
 }

 print "<pre>";
 print_r($finalPollArrayA);
 print "
";

и это выводит меня:

Array
(
    [Car] => 13
)

это как и ожидалось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...