PHP-код вставляет значения, но при вызове с функцией результат отличается

Я пытаюсь выполнить код, вызывая функцию, но результат отличается от выполнения кода сам по себе

$arr1=array(
0 => array(
"id" => 5,
"SKS" => 2,
"assignStatus" => 0
)

);

$arr2=array(
    0 => array(//hari senin
        0 => array(//sesi 1
            0 => array( //ruang 405
                0 => "", //draft 
                1 => "",  //sks
                2 => 0   //count3sks
            )       
        )
    )
);

//execute code with function
assignNilai($arr2,0,0,0,$arr1,0);
echo $arr2[0][0][0][0]." ".$arr2[0][0][0][1]." ".$arr2[0][0][0][2];
echo "<br>";
//execute code without function
$arr2[0][0][0][0] = $arr1[0]['id'];
 $arr2[0][0][0][1] = $arr1[0]['SKS'];
  if ($arr2[0][0][0][1]==3) {
    $arr2[0][0][0][2] = $csp[0][0][0][2] + 1; 
  }

echo $arr2[0][0][0][0]." ".$arr2[0][0][0][1]." ".$arr2[0][0][0][2];

function assignNilai($arr2,$hari,$sesi,$ruang,$arr1,$draft){
  $arr2[$hari][$sesi][$ruang][0] = $arr1[$draft]['id'];
  $arr2[$hari][$sesi][$ruang][1] = $arr1[$draft]['SKS'];
   if ($arr2[$hari][$sesi][$ruang][1]==3) {
      $arr2[$hari][$sesi][$ruang][2] = $csp[$hari][$sesi][$ruang][2] + 1; 
  }
}

Я пытаюсь добиться того, что отображается в коде, выполняемом вручную, с помощью функции, как это сделать?

какой результат вы получаете и каков ваш ожидаемый результат?

Kishen Nagaraju 21.05.2018 08:32

результат при выполнении с функцией равен 0, мой ожидаемый результат - $ arr2, который должен быть заполнен идентификаторами arr1 и sks, и если sks равно 3, значение count3sks внутри $ arr2 будет +1, если sks равно 3, это будет выглядеть вот так: $ arr2 [0] [0] [0] [0] = 5, $ arr2 [0] [0] [0] [1] = 2, $ arr2 [0] [0] [0] [2] ] = 0

Felix Candra 21.05.2018 08:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно понимать объем данных, вам нужно передать данные в функцию, чтобы ссылаться (использовать &) на вашу функцию, чтобы функция могла изменять исходный массив, а не локальную копию данных ...

function assignNilai(&$arr2,$hari,$sesi,$ruang,$arr1,$draft){

Бит &$arr2 позволяет функции изменять исходный массив.

В исходном коде функция работала со своей собственной версией массива, поэтому, когда функция завершилась, эта версия была просто отброшена, а исходное значение массива осталось прежним.

так что мне не хватало способа изменить исходный массив со значением локального массива внутри функции, и использование & в аргументе $ arr2 позволяет это?

Felix Candra 21.05.2018 09:01

Если бы вы повторили свой массив в функции в конце, вы бы получили желаемые значения. Но в области, в которой вы вызываете функцию, эти изменения не вносятся. Когда вы используете &, это фактически означает, что вы работаете с одним и тем же набором значений.

Nigel Ren 21.05.2018 09:03

Другие вопросы по теме