2014-03-19 4 views
0

Я не очень хорошо знаком с php, поэтому из-за этого я задаю много вопросов. Я пытаюсь вставить несколько значений в переменную $ logout array после получения значений из базы данных, но когда я запускаю код, у меня есть два массива, и каждый из них имеет значение:У меня есть логическая ошибка с вставкой в ​​массив

Array ([0] => 10 : 05: 02) Массив ([0] => 15:03:30)

Мне нужны они в одном массиве, я не знаю, что пойдет не так с моим кодом, может ли кто-нибудь помочь мне с этим точка. Это мой PHP код блока массива:

while($Frow = sqlsrv_fetch_array($Fstmt, SQLSRV_FETCH_ASSOC)) { 

    $R1 = $Frow['EmpID']; 
    $R2 = $Frow['DATE']->format('Y-m-d'); 
    $R3 = $Frow['TIME']->format('H:i:s'); 
    $R4 = $Frow['OBJECT']; 


    if ( $R4 == 1112 or $R4 == 2222) 
    { 

     /*$logout = array ("$R3"); 
     $count = count($logout); 
     for ($x=0 ; $x<=$count; $x++){ 
     print_r ($logout[$x]); 
     }*/ 

     $logout = array(); 
     $count = count($logout); 
     for ($x=0 ; $x<=$count; $x++){ 
     //$logout = array($R3); 
     $logout[$x] = $R3; 
     //print_r ($logout); 
     } 
     print_r ($logout); 


     /*$logout = array("$R3"); 
     foreach($logout as $key=>$value) { 
     $logout = array($value); 
     //print $value; 
     ECHO "</BR>"; 
     print_r ($logout); 
     ECHO "</BR>"; */ 

} 
    } 

ответ

0

Ну есть несколько ошибок:

В коде:

 $logout = array(); 
    $count = count($logout); 
    for ($x=0 ; $x<=$count; $x++){ 
    //$logout = array($R3); 
    $logout[$x] = $R3; 
    //print_r ($logout); 
    } 
    print_r ($logout); 

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

Чтобы встретить свой конец, вы должны объявить переменную $ logout снаружи и перед циклом wile, а затем добавить новое значение в конец.

попробовать:

$logout = arary(); 

while($Frow = sqlsrv_fetch_array($Fstmt, SQLSRV_FETCH_ASSOC)) { 

$R1 = $Frow['EmpID']; 
$R2 = $Frow['DATE']->format('Y-m-d'); 
$R3 = $Frow['TIME']->format('H:i:s'); 
$R4 = $Frow['OBJECT']; 


if ( $R4 == 1112 or $R4 == 2222) 
{ 
    $logout[] = $R3; 
} 

} 

    print_r ($logout); 
+0

СПАСИБО ВАМ Ян, я понимаю, что вы сказали, надеюсь, не упасть в ту же ошибку снова, ваше решение решить мою проблему , еще раз спасибо. –

+0

Добро пожаловать, мы все начинаем с новичка. – Yang

1

То есть из-за этого:

$logout = array();

Вы переинициализация как новый массив каждый раз. Вот почему ваше значение печатается, но не вместе с предыдущим. Объявите это заявление перед циклом while.

Также вам не нужна петля for, и, как сказал @Rikesh, используйте [], чтобы получить индекс с автоматическим инкрементом.

1

Я думаю, ваш $x может быть 0 каждый раз, когда ваши верхние петли запуска, так что просто изменить эту линию,

$logout[] = $R3; 

И print_r($logout); после завершения циклов. И как @I может иметь Cheezburger said, объявите массив $logout перед вашим циклом while.

0

Вы должны объявить $logout = array(); либо перед темв то время как петля или цикл согласно вашей логике.

У вас возникла проблема, поскольку в цикле for объявлен $logout, и он получает повторную инициализацию каждого цикла цикла.

+0

спасибо, я объявляю его вне цикла, и она работала –

Смежные вопросы