Пройдите цикл и добавляете новые переменные в многомерные массивы?в PHP - PullRequest
0 голосов
/ 03 декабря 2018

Подвести итоги проекта;Я создаю веб-страницу, где вы можете ввести время будильника и действия, которые нужно выполнить, когда время будет достигнуто.Есть сценарий моего сайта и сценарий Python.Сценарий python проверяет соответствие конфигурационного файла условиям времени, а затем выполняет необходимые действия.

После сбора всей необходимой информации у меня возникают проблемы при помещении ее в файл json.Файл конфигурации json перезаписывается каждый раз, когда пользователь вводит или изменяет значение и отправляет его.(Для сохранения предыдущего времени будильника они помещаются в значение ввода формы). Время будильника может меняться каждый день, а затем повторяться еженедельно.Чтобы указать, я делаю много переменных со всеми различными значениями для каждого введенного времени.Для понедельника у меня будет

$intMoH
$intMoM
$intMoAction
$intMoSource

, это повторяется для всех дней недели.

Затем я хочу поместить их все в массив, чтобы они могли быть закодированы и преобразованы в jsonformat.

Предполагается, что формат json напоминает что-то вроде этого.

[{
    "wake": [{
        "id": 1,
        "MoM": 8,
        "MoH": 30,
        "MoAction": "music",
        "MoSource": "music.mp3",
        "TuM": 7,
        "TuH": 30,
        "TuAction":"music",
        "TuSource":"music2.mp3"
    }]
}]

Я не создаю новый элемент с именем Mo, а затем помещаю все элементы в качестве его потомка, потому что я былсказал, что это облегчит помещение его в массив (меньше измерений).

Моя страница php создает форму и затем отправляет ее себе (без использования ajax, просто потому, что я ее не знаю).

$arrWeek = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saterday","Sunday");
$arrWeekSimple = array("Mo","Tu","We","Tu","Th","Fr","Sa","Su");
//$mowakeh = $_POST['mowakeh'];

$strName = "wake";
for( $i = 0; $i<6; $i++ )
{
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"int" . $arrWeekSimple[$i] ."H"}  = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"int" . $arrWeekSimple[$i] ."M"}  = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"str" . $arrWeekSimple[$i] ."Action"} = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"str" . $arrWeekSimple[$i] ."Source"} = $_POST[$tempPost];
/*

What values after taken from form would look like
$intMoH = 20;
$intMoM = 30;
$strMoAction = 5;
$strMoSource = 7;
*/
$arrNewJson=array();

$arrPush = array($strName=array(id=>1, $arrWeekSimple[$i]."H"=>${"int".$arrWeekSimple[$i]."H"}, $arrWeekSimple[$i]."M"=>${"int".$arrWeekSimple[$i]."M"}, $arrWeekSimple[$i]."Action"=>${"str".$arrWeekSimple[$i]."Action"},$arrWeekSimple[$i]."Source"=>${"str".$arrWeekSimple[$i]."Source"})

array_push($arrNewJson,$arrPush);


}


echo "Array made <br>";
print_r($arrNewJson);
$toTransfer = json_encode($arrNewJson, true);
file_put_contents("config.json",$toTransfer);

С чем я борюсь, так это для того, чтобы взять всю информацию, помещая ее в многомерный массив, чтобы затем иметь возможность кодировать ее в формат json и заменить файл.Как пройти каждый день и добавить это в массив?После исследования кажется, что из-за цикла я должен использовать array_push, но просто не могу понять, как его использовать.Интересно также, будет ли в файле json проще перейти в другое измерение и добавить дни недели?

Любая помощь приветствуется.Я надеюсь, что все это понятно :-) Спасибо за ваше время.

1 Ответ

0 голосов
/ 03 декабря 2018

Это ни в коем случае не красиво и не усложняет вещи, но это работает.Не беспокойтесь, если у вас нет проблем с similair.

$arrWeek = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saterday","Sunday");
$arrWeekSimple = array("Mo","Tu","We","Tu","Th","Fr","Sa","Su");
//$mowakeh = $_POST['mowakeh'];



$strName = "Wake";
$arrContent=array();
$arrAlarms=array("id"=>1,"name"=>$strName);
/*

$arrContents=[0]Monday=MOM,MOH
*/
for( $i = 0; $i<6; $i++ )
{
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"int" . $arrWeekSimple[$i] ."H"}  = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"int" . $arrWeekSimple[$i] ."M"}  = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"str" . $arrWeekSimple[$i] ."Action"} = $_POST[$tempPost];
$tempPost = "frm". $arrWeekSimple[$i] ."H";
${"str" . $arrWeekSimple[$i] ."Source"} = $_POST[$tempPost];
/*

What values would look like
$intMoH = 20;
$intMoM = 30;
$strMoAction = 5;
$strMoSource = 7;
*/
echo "<br>Day?";
echo $arrWeek[$i];
${$arrWeek[$i]}= array($arrWeekSimple[$i]."H"=>${"int".$arrWeekSimple[$i]."H"}, $arrWeekSimple[$i]."M"=>${"int".$arrWeekSimple[$i]."M"}, $arrWeekSimple[$i]."Action"=>${"str".$arrWeekSimple[$i]."Action"},$arrWeekSimple[$i]."Source"=>${"str".$arrWeekSimple[$i]."Source"});
echo "<br>For this day array  ";
print_r(${$arrWeek[$i]});

//$strCurrentDay=$arrWeek[$i];
$arrContent[$arrWeek[$i]]=${$arrWeek[$i]};
//array_push($arrContent,${$arrWeek[$i]});
echo "<br>arrcontent  ";
print_r($arrContent);

}
$arrAlarms["content"]=$arrContent;

echo "Array made <br>";
print_r($arrAlarms);

Результат будет следующим:

Day?Monday
For this day array Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) )
Day?Tuesday
For this day array Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) )
Day?Wednesday
For this day array Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) )
Day?Thursday
For this day array Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) [Thursday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) )
Day?Friday
For this day array Array ( [ThH] => 5 [ThM] => 5 [ThAction] => 5 [ThSource] => 5 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) [Thursday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Friday] => Array ( [ThH] => 5 [ThM] => 5 [ThAction] => 5 [ThSource] => 5 ) )
Day?Saterday
For this day array Array ( [FrH] => 6 [FrM] => 6 [FrAction] => 6 [FrSource] => 6 )
arrcontent Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) [Thursday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Friday] => Array ( [ThH] => 5 [ThM] => 5 [ThAction] => 5 [ThSource] => 5 ) [Saterday] => Array ( [FrH] => 6 [FrM] => 6 [FrAction] => 6 [FrSource] => 6 ) ) Array made
Array ( [id] => 1 [name] => Wake [content] => Array ( [Monday] => Array ( [MoH] => 1 [MoM] => 1 [MoAction] => 1 [MoSource] => 1 ) [Tuesday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Wednesday] => Array ( [WeH] => 3 [WeM] => 3 [WeAction] => 3 [WeSource] => 3 ) [Thursday] => Array ( [TuH] => 4 [TuM] => 4 [TuAction] => 4 [TuSource] => 4 ) [Friday] => Array ( [ThH] => 5 [ThM] => 5 [ThAction] => 5 [ThSource] => 5 ) [Saterday] => Array ( [FrH] => 6 [FrM] => 6 [FrAction] => 6 [FrSource] => 6 ) ) ) 

Несколько вещей, которые следует иметь в виду: array_push () не позволяетвам установить ключ.$ {$ arrWeek [$ i]} - это массив, который присваивается другому массиву, где ключом является $ arrWeek [$ i].При создании массива с $ arr = array ("id" => 1, "name" = $ name) не забывайте тупо, что это всегда $ arr = array ("id" => 1, "name" => $ название).Также ключом id должна быть строка.

Sources https://www.tutorialspoint.com/php/php_get_post.htm Как вставить значение и ключ в массив

...