Нужно вывести данные из массива

Тема в разделе "Как сделать...", создана пользователем kuzmit42, 7 мар 2015.

  1. kuzmit42

    kuzmit42 Постоялец

    Регистр.:
    9 янв 2013
    Сообщения:
    131
    Симпатии:
    31
    Помогите пожалуйста с массивом. Данные занесенные в массив, их нужно вывести в таблицу.
    Если ягода присутствует в переменной "$a" то ее помечаем как гнилую.
    Все остальные ягоды из массива помечаем как свежие.
    Вот мой код но не знаю как его допилить.
    PHP:
        // Вывод нужных ягод. данные в переменную "a" будут браться из mysql.
        
    $a "03, 07, 08";

        
    // Массив с значениями
        
    $array = array(
           
    01 => "малина",
           
    02 => "смородина",
           
    03 => "клубника",
           
    04 => "шелковица",
           
    05 => "виноград",
           
    06 => "смородина",
           
    07 => "крыжовник",
           
    08 => "слива",
           
    09 => "виноград",
           
    10 => "вишня",
           
    11 => "черешня",
           
    12 => "черника",
        );


        echo 
    "<table>";
        
    // Вывод данных из масива которые обьявленны в переменной "$a" т.е. нужено вывести "клубнику, крыжовник, сливу" гнилая (в переменной "а" могут быть другие значения)
        
    foreach($array){
            echo 
    "<tr><td>ИМЯ ЯГОДЫ</td><td>гнилая</td></tr>";
        }
        
    // Вывод данных из масива которые не обьявленны в переменной "$a" т.е. все остальные ягоды
        
    foreach($array){
            echo 
    "<tr><td>ИМЯ ЯГОДЫ</td><td>свежая</td></tr>";
        }
        echo 
    "</table>";
     
    Последнее редактирование: 7 мар 2015
  2. Genk0

    Genk0

    Регистр.:
    2 июн 2010
    Сообщения:
    10
    Симпатии:
    11
    $a сделать массивом, все равно тянется из бд
    PHP:
     $a = array(030708); 
    PHP:
    foreach($array){
     echo 
    "<tr><td>ИМЯ ЯГОДЫ</td><td>гнилая</td></tr>";
     }
    // Вывод данных из масива которые не обьявленны в переменной "$a" т.е. все остальные ягодыforeach($array){
     
    echo "<tr><td>ИМЯ ЯГОДЫ</td><td>свежая</td></tr>";
     }
    заменить на
    PHP:
        foreach($array as $k=>$v){
    if(
    in_array($k,$a)) {
            echo 
    "<tr><td>".$v."</td><td>гнилая</td></tr>";
    } else {
            echo 
    "<tr><td>".$v."</td><td>свежая</td></tr>";
    }
        }
     
    latteo и kuzmit42 нравится это.
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.549
    Симпатии:
    1.430
    Зачастую, сделать это лучше всё таки на php, даже если оно хранится в разных row:
    PHP:
    $a explode(', '$a);
    вместо прохода циклом по результату выборки и заполнения массива $a.
     
    kuzmit42 нравится это.
  4. kuzmit42

    kuzmit42 Постоялец

    Регистр.:
    9 янв 2013
    Сообщения:
    131
    Симпатии:
    31
    Данные в $a это просто значение ячейки в базе, это не выборка.
    В итоге остановился на таком варианте.
    вот полный код:
    PHP:
        $a "03, 07, 08, 14"// Массив гнилых фруктов
        
    echo "<br />ID гнилых: ".$a."<br />";
        if(!
    is_array($a))
        {
            
    $a explode(", "$a);
        }
       
        
    // Массив с значениями
        
    $array = array(
            
    "01" => "01. малина",
            
    "02" => "02. смородина",
            
    "03" => "03. клубника",
            
    "04" => "04. шелковица",
            
    "05" => "05. виноград",
            
    "06" => "06. смородина",
            
    "07" => "07. крыжовник",
            
    "08" => "08. слива",
            
    "09" => "09. виноград",
            
    "10" => "10. вишня",
            
    "11" => "11. черешня",
            
    "12" => "12. черника",
            
    "13" => "13. клюква",
            
    "14" => "14. рябина",
            
    "15" => "15. абрикос",
        );

        
    // Создаем массивы для свежих и гнилых:
        
    $swez = array();
        
    $gnil = array();

        
    // В цикле заполняем массивы строками:
        
    foreach($array as $k=>$v){
            if( 
    in_array($k$a) )$swez[] = "<tr><td>".$v.": &nbsp;</td><td>гнилая</td></tr>";
            else 
    $gnil[] = "<tr><td>".$v.": &nbsp;</td><td>свежая</td></tr>";
        }

        
    // Вывод результатов:
        
    echo "<table>".implode(PHP_EOL$swez).implode(PHP_EOL$gnil)."</table>";
     
  5. Genk0

    Genk0

    Регистр.:
    2 июн 2010
    Сообщения:
    10
    Симпатии:
    11
    Вариантов написания множество, поэтому можно постить и постить - кто как говнокодит)
     
    latteo и Freeb нравится это.