У меня есть функция в PHP. Я передаю два массива функции в качестве ссылок. Хотя функция обновляет $array2
вне функции, она не обновляет $array
. Ниже моя функция.PHP-переменные, не изменяющиеся вне функции
function JobAssign($i,&$array,&$array2,$Machine_Interchange) {
$compmachine = $array[$i]['Machine_Name'];
$CLT = $array[$i]["Estimated_Start_Date"];
$ET = $array[$i]["Estimated_Completion_Date"];
$Machine = $array[$i]['Machine_Name'];
$Compatibility_sql = "SELECT Machine2 FROM Machine_Interchange where Machine1 = '$Machine' and Value = 1";
$compatibility_query = mysql_query($Compatibility_sql) or die(mysql_error());
for($i=0; $compatibility[$i] = mysql_fetch_assoc($compatibility_query);$i++);
array_pop($compatibility);
$maxkey = max(array_keys($compatibility));
$maxnumber = max(array_keys($array2))+1;
$k=0;
do{
$compmachine = $compatibility[$k]['Machine2'];
$CLT = $array2[$compmachine];
if($array2[$compatibility[$k]['Machine2']]>$array2[$compatibility[$k+1]['Machine2']]) {
$compmachine = $compatibility[$k+1]['Machine2'];
$CLT = $array2[$compatibility[$k+1]['Machine2']];
}
$k=$k+1;
}
while($k<$maxkey);
$array[$i]["Machine_Name"] = $compmachine;
$array[$i]["Estimated_Start_Date"] = $CLT;
$prodhours = $array[$i]["Prod_Hrs"];
$array[$i]["Estimated_Completion_Date"] = date('Y-m-d H:i:s', strtotime($CLT . " +$prodhours hour"));
$array2[$compmachine] = $array[$i]["Estimated_Completion_Date"];
echo $array[$i]['Machine_Name'].'<br>';
echo $array[$i]['Estimated_Start_Date'].'<br>';
echo $array[$i]['Estimated_Completion_Date'].'<br>';
echo $array2[$compmachine].'<br>';
}
JobAssign(0,$Jobs_Data,$LT,$Machine_Interchange);
echo $Jobs_Data[0]['Machine_Name'].'<br>';
echo $Jobs_Data[0]['Estimated_Start_Date'].'<br>';
echo $Jobs_Data[0]['Estimated_Completion_Date'].'<br>';
echo $LT['Machine 3'];
Ниже вывод, что я get.The первые 4 строк вывода находится внутри функции и следующий 4 из-за пределы функции.
Machine 3
2014-07-12 00:00:00
2014-07-15 11:00:00
2014-07-15 11:00:00
Machine 1
2014-07-30 00:00:00
2014-08-02 00:00:00
2014-07-15 11:00:00
Когда эхо измененные переменные внутри функции они меняются, но когда я эхо $array
вне функции она не изменяет значения $array
. Изменены только значения для $array2
, хотя я передал оба массива в качестве ссылки в аргументах функции. Это означает, что строки 4 и 8 на выходе совпадают, что означает, что значения для $ array2 изменились, но не для $ array.
Где вы звоните в 'функцию JobAssign'? –
Я вызываю функцию после того, как она определена и передает 2 разных массива для $ array и $ array2. – MaverickPablo
Пожалуйста, добавьте ваш вопрос, чтобы его можно было проверить. –