2017-01-10 12 views
3

この機能が動作しない理由を理解しようとしています。誰かが私に何が起こっているのか教えてくれますか?なぜこの関数は失敗しますか?

function API() { 
     $seed = str_split(md5(rand(0000000,9999999))); 
     $rand = array_rand($seed, 10); 
     $convert = array_map(function($n){ 
      global $seed; 
      return $seed[$n]; 
     },$rand); 

     $var1 = implode('',$convert); 

     $seed = str_split(md5(rand(0000000,9999999))); 
     $rand = array_rand($seed, 10); 
     $convert = array_map(function($n){ 
      global $seed; 
      return $seed[$n]; 
     },$rand); 

     $var2 = implode('',$convert); 

     $seed = str_split(md5(rand(0000000,9999999))); 
     $rand = array_rand($seed, 10); 
     $convert = array_map(function($n){ 
      global $seed; 
      return $seed[$n]; 
     },$rand); 

     $var3 = implode('',$convert); 
     $NewRecordLocatorID = $var1 . '-' . $var2 . '-' . $var3; 
     return $NewRecordLocatorID; 
} 

この機能は、単に機能外の値をエコーバーサス--

を返すのだろうか?これはクラスに入る必要がありますか?

$seed = str_split(md5(rand(0000000,9999999))); 
$rand = array_rand($seed, 10); 
$convert = array_map(function($n){ 
    global $seed; 
    return $seed[$n]; 
},$rand); 

$var1 = implode('',$convert); 

$seed = str_split(md5(rand(0000000,9999999))); 
$rand = array_rand($seed, 10); 
$convert = array_map(function($n){ 
    global $seed; 
    return $seed[$n]; 
},$rand); 

$var2 = implode('',$convert); 

$seed = str_split(md5(rand(0000000,9999999))); 
$rand = array_rand($seed, 10); 
$convert = array_map(function($n){ 
    global $seed; 
    return $seed[$n]; 
},$rand); 

$var3 = implode('',$convert); 
$NewRecordLocatorID = $var1 . '-' . $var2 . '-' . $var3; 
echo $NewRecordLocatorID; 

上記所望の結果である1d0f09fd36-1e656c979d-3468a68feaを返します。

+1

私はあなたが( 'エコーAPIをやっていると仮定);'あなたが機能を行う場合ので、結果を出す – RiggsFolly

答えて

6

これは、あなたがglobalと呼ぶ理由によるものです。これらの変更:

これに
$convert = array_map(function($n){ 
    global $seed; 
    return $seed[$n]; 
},$rand); 

$convert = array_map(function($n) use ($seed){ 
    return $seed[$n]; 
},$rand); 

出来上がり、それが動作します。

2

グローバルスコープから変数を取得しようとしています。

global $seed; 

しかし、この変数は関数APIのローカルスコープにあります。 あなたは、こことして

$convert = array_map(function($n) use($seed){ 
    return $seed[$n]; 
},$rand); 
関連する問題