php:如何将字符串数据更改为数字数据

php:如何将字符串数据更改为数字数据,php,mysql,string,numeric,Php,Mysql,String,Numeric,您能否告诉我如何在php和mysql脚本中更改此结果: Model Class Ball S Book A Spoon Plate B Box C 这是我的数据库: CREATE TABLE IF NOT EXISTS `inspection_report` ( `id`

您能否告诉我如何在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           s       a       b       c
 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

这是怎么回事?谢谢。

您的问题有点不清楚,但我假设您有一个数组中的输入数据,该数组将名称映射到defect,并且您希望每一行的相应列中都有一个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      s  a  b  c
<?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>

名字是a b c

是要统计所有结果,还是只显示1或0。请进一步澄清你的问题。你没有说你是否希望查询结果是这种形式,或者是否可以使用php重新格式化结果。我只是想显示1或0,比如我的示例类和模型之间的关系是什么?类是模型的缺陷条件为什么你需要这样一个奇怪的表示?为什么您的第一个表不适合您?为什么
echo“$name”
中的引号?@deceze原来是
echo“$name\t”;我把它改了,但没有把它们去掉。我明白了,这只是我的一个讨厌之处……;)谢谢上校,弹片确实有道理。我仍然不清楚你为什么想要/需要这个。是的,我感谢大家。我之所以喜欢这个原因是因为如果字符变成了数字,那将是一个计算。如果在字段“s”中找到1号或0号,将乘以4。你知道,我会在两周左右对这个问题发疯。fiuh。doumo arigatou gozaimasu。
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`