php: как изменить строковые данные станут числовыми данными

можете ли вы сказать, как изменить этот результат в сценарии php и mysql:

Model Class Ball S Book A Spoon Plate B Box C 

это моя БД:

 CREATE TABLE IF NOT EXISTS `inspection_report` ( `id` int(11) NOT NULL AUTO_INCREMENT, `Model` varchar(14) NOT NULL, `Serial_number` varchar(8) NOT NULL, `Lot_no` varchar(6) NOT NULL, `Line` char(5) NOT NULL, `Class` char(1) NOT NULL, `Status` varchar(6) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `Model` (`Model`,`Serial_number`,`Lot_no`,`Line`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=48 ; 

как если бы я хотел показать результат вроде:

  Model sabc Ball 1 0 0 0 Book 0 1 0 0 Spoon 0 0 0 0 Plate 0 0 1 0 Box 0 0 0 1 

Что это за запрос? Благодарю.

 SELECT `Model`, IF(`Class`='S', 1, 0) AS `S`, IF(`Class`='A', 1, 0) AS `A`, IF(`Class`='B', 1, 0) AS `B`, IF(`Class`='C', 1, 0) AS `C` FROM `inspection_report` 

Ваш вопрос немного неясен, но я предполагаю, что у вас есть входные данные в имени сопоставления массива для дефекта, и вы хотите, чтобы каждая строка a 1 в соответствующем столбце и нуль всюду. Если да, то это именно так:

 $arr = array('blue' => 'S', 'red' => 'A', 'yellow' => null, 'green' => 'B', 'black' => 'C'); $defects = array_filter(array_unique(array_values($arr))); echo "name\t"; echo implode("\t", $defects); echo "\n"; foreach($arr as $name => $defect) { echo "$name"; foreach($defects as $test) { echo "\t"; echo $test == $defect ? 1 : 0; } echo "\n"; } 

Очень грубый пример, вы бы, вероятно, пошли с таблицами HTML в действительности.

 <?php // $rows = array(array('name' => 'blue', 'class_defect' => 'S'), ...); ?> <pre> name sabc <?php foreach ($rows as $row) { printf('%-10s', $row['name']); // padding with spaces foreach (array('s', 'a', 'b', 'c') as $col) { echo (strtolower($row['class_defect']) == $col) ? 1 : 0; echo ' '; // just padding again } } ?> </pre>