Добрый день. Есть вот такой код, который соединяет массив в строку: PHP: $insert = "INSERT INTO database ( [OID] ,[Date] ,[Day] ,[Product] ,[Spec] ,[ProductPlan] ,[Socket] ,[ProductCycle] ,[Shift] ,[Characteristic] ,[Ingredient] ,[ProductWeight] ,[ExtraCharacteristic] ,[Packing] ,[status] ,[orderliness] ,[articul] ,[transitionTime] ,[directum] ) VALUES "; //тут некоторые условия, в одном из условий происходит цикл массива: foreach($array as $key => $item){ if($key !== 0){ $insert .= ", "; } $insert .= "( ".sqlNull($item['OID']).", ".sqlNull($item['Date']).", ".sqlNull($item['Day']).", ".sqlNull($item['Product']).", ".sqlNull($item['Spec']).", ".sqlNull($item['ProductPlan']).", ".sqlNull($item['Socket']).", ".sqlNull($item['ProductCycle']).", ".sqlNull($item['Shift']).", ".sqlNull($item['Characteristic']).", ".sqlNull($item['Ingredient']).", ".sqlNull($item['ProductWeight']).", ".sqlNull($item['ExtraCharacteristic']).", ".sqlNull($item['Packing']).", ".sqlNull($item['status']).", ".sqlNull($item['orderliness']).", ".sqlNull($item['articul']).", ".sqlNull($item['transitionTime']).", ".sqlNull($item['directum'])." )"; } function sqlNull($item){ if(is_null($item)){ $result = 'NULL'; }else{ $result = "'".$item."'"; } return $result; } Так вот вопрос, с учетом того что ключи массива совпадают с именами, можно ли упростить это все до пары строк. Например знаю что у js есть такая функция для работы с объектами: Код (Javascript): var obj = {a:1, b:2, c:3}; for (var prop in obj) { console.log("obj." + prop + " = " + obj[prop]); } Может и тут можно что то такое сделать, пройтись циклом по $item?
разобрался, результат тот же, только проверку на null надо еще сделать, чтоб в базу писалась не пустая строка, а NULL. Есть идеи? PHP: $insert = "INSERT INTO database "; foreach($array as $key => $item){ if($key === 0){ $insert .= " ([".implode("],[", array_keys($item))."]) VALUES "; }else{ $insert .= " ,"; } $insert .= "('".implode("', '", $item)."')"; }
Это не функция, как и это: PHP: $obj = ['a'=>1, 'b'=>2, 'c'=>3]; foreach ($obj as $k => $v) { echo "obj." . $k . " = " . $v; } Трудно конечно когда за деревьями лес не видно