2014-11-02 4 views
2

Итак, я застрял здесь, и я знаю, что будет простое решение, но я не могу понять это. Поэтому дело в том, что у меня есть функция, которая создает столбцы в базе данных, если она не существует. Я получил функцию для работы, но я хочу добавить функциональность в функцию обнаружения типа столбца (VARCHAR, INT и т. Д.) И соответственно создать столбцы. Я пытаюсь сделать это с помощью ключевого слова gettype. Теперь, $productData находится в массиве, поэтому мне нужно применить foreach, чтобы разделить их, а затем получить тип значения, проблема в том, что в конце цикла foreach он дает мне только строку. Где $productData имеет 4 строки и 1 целое ..Foreach возвращает только один вывод

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

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

Может кто-нибудь мне помочь там, пожалуйста?

Спасибо ..

+1

переменная может иметь только одно значение ... –

+0

Я храню его в массиве. Если вы var_dump внутри foreach, он дает вам все выход правильно. –

+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() как он потерпит неудачу на bojects. Вы должны убедиться, что каждый $value является внутренним типом

Update: gettype() возвратит "object" для всех объектов. Таким образом, это безопасный способ определить тип переменной. Хотя в случае, если вам нужен класс объекта, который нужно использовать get_class() в случае gettype() возвращает "object"

+0

Спасибо Фейзе, что сработало. Я не уверен, что вы подразумеваете под внутренним типом? –

+0

Извините, посмотрите мое обновление через минуту в ответе. – fejese

+0

Спасибо за хедз-ап Fejese, я буду использовать 'gettype' для этого, поскольку он используется для переменной. Но я думаю, что скоро буду использовать 'get_class' для дальнейшей работы. –

1

Если вы выбираете определения таблицы сначала с помощью команды MYSQL: SHOW COLUMNS FROM mytable, который будет возвращать массив столбцов с их определениями

+0

Я занимался MySQL в другом месте, я просто получаю тип для каждой записи в продукте, чтобы я мог добавить для нее новый столбец. –

Смежные вопросы