2014-04-29 4 views
1

Моя проблема очень специфична. Я начинающий программист php, и я испытываю трудности с индексацией массива datastructure в PHP. Программа считывает из входного файла (input.txt) и сохраняет результат в массив с ключом, аналогичным элементу. Хотя файлы input.txt имеют номера для удобства, я должен хранить их как строку (моей программе нужны целые числа размером более 32 бит). Но когда я пытаюсь их индексировать как $a["3"], я получаю сообщение об ошибке Undefined offset: 3. I tried $a['3'], $a[3] все с тем же результатом. Но любопытно, что я могу проиндексировать последний элемент в массиве $a["2"] правильно! Пожалуйста помоги.PHP: проблема индексации ассоциативного массива

Вот входной текстовый файл:

3 
4 
5 
1 
2 

Вот фрагмент кода:

<?php 
    ignore_user_abort(true); 
    set_time_limit(0); 
    $temp=0; 
    $a= array(); 
    $file= fopen("input.txt","r") or exit("unable to open file"); 
    while(!feof($file)){ 
     $temp=fgets($file); 
     $a[$temp]=$temp;  
    } 
    fclose($file); 
    echo "<br>The array is .. "; 
    foreach ($a as $key => $item) { 
     echo "<br> Key => item =",$key."=>",$item ; 
     echo "<br>Manual array test ",$a["3"]; // This line demonstrates the problem. 
    } 
    echo "<br>Manual array test ",$a["2"]; // This one has no error! So basically only the last element is being indexed correctly 

    //echo "<br> No of 2 sums is ",twoSum($a,4,6); 
?> 
+1

'$ temp = (int) fgets ($ file);', no? – raina77ow

+1

, вы должны получить синтаксические ошибки для использования ',' где вы должны использовать '.', когда вы выполняете строки. Например здесь: 'echo '
Key => item =", $ key. "=>", $ Item; 'it должно быть' echo'
Key => item = ". $ Key." => ". $ item; ' –

+0

@ raina77ow OP хочет хранить целые числа> INT_MAX, поэтому необходимо использовать строковый тип. – Benubird

ответ

3

Новое значение строки также получать хранится в $temp, trim данные $temp, как показано ниже и попробуйте

$temp = trim(fgets($file)); 
+0

Спасибо, приятель! –

+0

Добро пожаловать, рад, что это сработало. –

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