Как использовать использовать что-то вроде HashMap в PHP?

#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; }