Bir işlevin bir dizi dönen (PHP)

2 Cevap php

Ben kendi API kullanarak bir Rapidshare bağlantı durumunu kontrol etmek için kodlanmış bu işlevi vardır:

function CheckLink($fileid, $filename)
    {
    	$q = file_get_contents("http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=checkfiles_v1&files=$fileid&filenames=$filename");
    	$r = explode(",", $q);
    	switch ($r[4])
    	{
    		case 0:
    			return array('status' => "0", 'desc' => "File not found");
    			break;
    		case 1:
    			return 1;
    			break;
    		case 2:
    			return 1;
    			break;
    		case 3:
    			return array('status' => "0", 'desc' => "Server down");
    			break;
    		case 4:
    			return array('status' => "0", 'desc' => "File marked as illegal");
    			break;
    		case 5:
    			return array('status' => "0", 'desc' => "Anonymous file locked");
    			break;
    		case 6:
    			return 1;
    			break;
    		default:
    			return array('status' => "0", 'desc' => "Unknown error");
    	}
    }

Işlev 1 döndürür, dosya canlıdır. Bir dizi döndürür Eğer dosya öldü demektir. Döndürür dizisi durum kodu (0 ölü çünkü) ve kullanıcıya gösterilmesini hata mesajıdır.

Şimdi, index.php bu kodu vardır:

if(is_array($var = CheckLink($match[1], $match[2])))
{
    echo $var[1];
}

Ne yapmaya çalışıyorum işlevinin sonucu (link dead anlamı) bir dizidir ve bu ise, kullanıcıya hata mesajı echo kontrol etmektir. Ama çalışmıyor, hiçbir PHP hatası almak ve sayfaya şey echo'ing değil.

Bu konuda herhangi bir yardım? Teşekkürler. :)

2 Cevap

Lütfen sonuç dizide hiçbir anahtar 1 var. echo $var['desc'] için echo satırı değiştirin.

Düzenleme WRT Yorum:

Hayır, PHP 'diziler' daha karma tablolar gibidir: Her değer genellikle sayısal olan bir anahtarı vardır, ama (ben bir şey olabilir 'derim bir dize olabilir, ama ben neyin kapsamlarını emin değilim ) PHP bir anahtar olabilir. Eğer birini belirtmek yoksa, bir tamsayı, otomatik olarak artan anahtar olması için yapılır, bu yüzden bu iki diziler eşdeğerdir: array('a', 'b', 'c') ve array(0 => 'a', 1 => 'b', 2 => 'c').

Hash tabloları ayıklanmamış çünkü [1] ile erişilen technically hayır "ikinci unsur" vardır. Aslında anahtarsız değil, çünkü bir "anahtarsız" dizi acces olabilir: anahtar sadece automagically tanımlanır.

Bir print_r in $var? yaptın

$var = CheckLink($match[1], $match[2]);
var_dump(is_array($var));
print_r($var);