Foreach只返回一个输出

时间:2014-11-02 21:55:40

标签: php mysql arrays foreach

好的,所以我被困在这里,我知道会有一个简单的解决方案,但我无法弄明白。所以问题是我有一个在数据库中创建列的函数(如果不存在)。我得到了功能,但我想在检测列类型(VARCHAR,INT等)和相应创建列的功能中添加功能。我想通过gettype关键字完成此操作。现在,$productData在数组中,所以我需要应用foreach来将它们分开,然后我得到值类型,问题是在最后的foreach循环中,它只给我字符串。其中$productData有4个字符串和1个整数..

$array       = (array) $productData;
$arrayValues = array_values( $array );
$i = 0;

foreach ( $arrayValues as $key => $value ) {
    $types = array( "id-$i" => gettype( $value ) );
    $i++;
}
var_dump($types);

有人可以帮助我吗?

谢谢..

2 个答案:

答案 0 :(得分:4)

您只需要初始化一次数组并稍后向其中添加元素:

$array       = (array) $productData;
$arrayValues = array_values( $array );
$i = 0;

$types = array();
foreach ($arrayValues as $key => $value) {
    $types["id-$i"] = gettype($value);
    $i++;
}
var_dump($types);

小心gettype(),因为它会在boject上失败。您需要确保每个$value都是内部类型

<强>更新 gettype()将为所有对象返回"object"。因此,它是一种确定变量类型的安全方法。虽然如果你需要对象的类,你需要使用get_class(),以防gettype()返回"object"

答案 1 :(得分:1)

如果您首先使用MYSQL命令选择表定义:SHOW COLUMNS FROM mytable将返回包含其定义的列数组