Foreach只返回一个输出


Foreach returns only one output

好吧,所以我被困在这里,我知道会有一个简单的解决方案,但我想不出来。所以问题是,我有一个函数,如果数据库不存在,它会在数据库中创建列。我得到了可以工作的函数,但我想在函数中添加检测列类型(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);

有人能帮我吗?

谢谢。。

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

$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(),因为它会在项目中失败。您需要确保每个$value都是内部类型

更新:gettype()将为所有对象返回"object"。因此,确定变量的类型是一种安全的方法。尽管在需要对象的类的情况下,在gettype()返回"object" 的情况下需要使用get_class()

如果您首先使用MYSQL命令选择表定义:SHOW COLUMNS FROM mytable,它将返回一个列数组及其定义