#php #dictionary #post
#php #словарь #Публикация
Вопрос:
Я получаю контент с другой страницы, у него есть две переменные, From
и Body
. Обе переменные являются строками, я сохраняю их обе в переменных.
$number = $_POST['From'];
$body = $_POST['Body'];
у $body
него есть такие данные, как это, MT 80, SP 30, UP 45
Я хочу создать словарь или хэш-карту того же самого. где in MT
— это ключ и 80
его значение.
Позже я буду хранить их в базе данных, поэтому не могли бы вы, пожалуйста, рассказать мне, как это сделать? Я новичок в PHP.
Ответ №1:
Прежде всего разделите все значения, разделенные запятыми, на массив
$array = preg_split( '/(,s|,)/', $body);
Теперь мы хотим разделить наборы букв и цифр (например, MT и 80).
Итак, мы разделяем каждый из них на пробелы между ними
$result = array();
for($i=0;$i<count($array);$i ){
$temp = explode(" ",$array[$i]);
$result[$temp[0]] = $temp[1];
}
Переменная $result будет содержать ассоциативный массив, например, $result[‘MT’] = 80; и т. д
Что касается базы данных, я бы рекомендовал использовать PDO (PHP Data Object):
try{
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// Make it show exceptions if something goes wrong
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $conn->prepare("INSERT INTO tableName (key, value) VALUES (:key, :value)");
foreach($result as $key => $value){
$query->execute(array(":key"=>$key,":value"=>$value));
}
}
catch(PDOException $e){
echo "Error: " . $e->getMessage();
}
В этом примере предполагается, что вы будете использовать mysql. Очевидно, вам нужно будет заменить $servername, $dbname, $username, $password и tableName соответствующими значениями.
Комментарии:
1. Как повторить это тогда?
2. @MayurTolani
foreach($result as $key => $value){ /* code */ }
3. Извините, я пропустил комментарии, которые я добавлял в часть о базе данных. Я поместил цикл foreach как часть кода базы данных.
4. foreach($result как $key => $value){ print $key; print $value; } это ничего не печатает
5. Попробуйте это:
$array = preg_split( '/(,s|,)/', $body); $result = array(); for($i=0;$i<count($array);$i ){ $temp = explode(" ",$array[$i]); $result[$temp[0]] = $temp[1]; } foreach($result as $key => $value){ print $key; print $value; }