2010-08-27 2 views
1
<? 
for ($i=0; $i<=9; $i++) { 


    $b=urlencode($cl[1][$i]); 
    $ara = array("http://anonymouse.org/cgi-bin/anon-www.cgi/", "http%3A%2F%2Fanonymouse.org%2Fcgi-bin%2Fanon-www.cgi%2F"); 
    $degis = array("", ""); 
    $t = str_replace($ara, $degis, $b); 
    $c="$t"; 
    $base64=base64_encode($t); 


    $y=urldecode($t); 
    $u=base64_encode($y); 
    $qwe = "http://anonymouse.org/cgi-bin/anon-www.cgi/$y"; 
    $ewq = "h.php?y=$u"; 
    $bul = ($qwe); 
    $degistir = ($ewq); 
    $a =str_replace($bul, $degistir, $ic); 
} 
?> 

когда я положил $cl[1][0], $cl[1][1], $cl[1][2] работает успешно, но когда я положил $i его возвращающий null. почему это происходит?Почему это для цикла возвращает null?

** Я пытаюсь изменить Каждый URL в base64 коды, которые я получил от удаленного сервера с preg_match_all **

+1

Интересный фрагмент кода. – fabrik

+0

Что вы делаете со всеми возвращаемыми значениями? Как бы то ни было, $ base64 перезаписывается в каждом цикле. –

+0

Вы описываете, что хотите от этого сделать? Потому что это выглядит слишком сложно. Ваша цель избавиться от префикса 'http: //' в начале или в какой-то другой точке строки? Для первого есть лучшие методы –

ответ

2

Вы проверили, что $c1[1] имеет 10 элементов? (От $c1[1][0] до $c1[1][9] есть элементы, не 9.

Может быть, вы получаете null для последнего $c1[1][9]. Попробуйте сделать var_dump($c1[1]), чтобы проверить, что она содержит все элементы, которые вы ожидаете.

Update:

Изменение этой линии

for ($i=0; $i<=9; $i++) { 

for ($i=0; $i<9; $i++) { 
+0

var_dump ($ cl [1]) возвращает массив (9), это проблема? –

+0

Да. Ваш массив содержит 9 элементов, но вы выполняете итерацию более 10 элементов, следовательно, 1 является нулевым. См. Мой обновленный ответ. – pakore

+0

, когда я использую for ($ i = 0; $ i <8; $ i ++) = $ c1 [1] [8], ($ i = 0; $ i <9; $ i ++) = $ c1 [1] [ 8] не все меняют только один. –

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