2012-05-03 9 views
0

あるシート上の関数から別のPHPシート上の新しい配列に配列を渡そうとしています。ここで関数からのPHP配列が新しいシートの配列に渡されました

は私が持っているものです。

機能は次のとおりです。

//the arr.php file 

<?php 

function search($var){ 
$var; 

$a=array(); 
$a[0]=$var+1; 
$a[1]=$var+2; 
$a[2]=$var+3; 
$a[3]=$var+4; 
return $a; 
} 
?> 

セカンドシートは次のとおりです。

<?php 

include ('arr.php'); 
$n=4; 

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

$temp=search(3); 

$thearrayfromarr[$i]=$temp;//doesn't work 
print_r($thearrayfromarr[$i]);//doesn't work 
} 

?> 

私はエコーできる配列変数を持つように第二のシートが欲しいです検索機能からの$ a配列データを に出力します。

だからそれは、例えば、私は

echo thearrayfromarr[0]; // It will have the value of $a[0] echo'd to me 
+0

を? –

+0

@RiverC:ここで定義されています: '$ thearrayfromarr [$ i] = $ temp;'最初の反復はそれを定義し、次の反復はそれを追加します。 –

+0

これは、$ thearrayfromarr = array()のように明示的に定義する方がはるかに優れていますが、 ...これらの2つのファイルがあると、2番目のファイルが何かに含まれているかどうかわからないので、$ thearrayfromarrがどこから来るのかは不明です。さらに、スコープでforループの問題が発生します。 –

答えて

3

を入力すると、あなたの関数は何もINGのreturnではありません。

function search($var) { 
    $a=array(); 
    $a[0]=$var+1; 
    $a[1]=$var+2; 
    $a[2]=$var+3; 
    $a[3]=$var+4; 
    return $a; // Need this 
} 
+0

ありがとう、その部分を修正しました –

+0

もっと時間があれば、あなたのコードが実際に何をしているのかを理解しようとします。私はこれがあなたの実際のコードではなく、ここで質問をするためのダミー/サンプルコードだと仮定します。 'search'と呼ばれる関数は、これがするべきことが何であっても正しいとは思われません。 –

0

あなたsearch()機能は$aを返していません。ここで働くクリーンアップバージョンです:

<?php 
//the arr.php file 

function search($var){ 
    $a = array(); 

    for($n=1; $n<=4; $n++) { 
     $a[] = $var + $n; 
    } 

    return $a; 
} 
?> 
+1

クリーンアップされたバージョンは' return range($ var + 1、$ var + 4); ' –

+0

となります。しかし、私は単純なループが実際にOPに何が起こっているのかを示していると思います。 – Nadh

+0

私はリターン部分を修正しました、今すぐ動作しますが、新しいシートのthearrayfromarrに、呼び出された関数検索(3)の値があります。 –

0

あなたは単に関数からこの配列を返すことができます。

return $a; 

すでに何かを返す場合は、参照引数として$a宣言する必要があります。

function search($var, &$a) { 
    $a[0]=$var+1; 
    $a[1]=$var+2; 
    $a[2]=$var+3; 
    $a[3]=$var+4; 
    return "something"; 
} 

$a = array(); 
$temp = search(3, $a); 
// $a now has new value 
0

関数内で定義した配列は、外部からアクセスできません。配列を使用するには、配列を返す必要があります。あなたはこのようにそれを使用

function search($var){ 
$var; 

$a=array(); 
$a[0]=$var+1; 
$a[1]=$var+2; 
$a[2]=$var+3; 
$a[3]=$var+4; 
return $a; 
} 

配列を返す

が続い:この場合、

include ('arr.php'); 
$n=4; 

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

$temp=search(3); 

$thearrayfromarr[$i] = $temp; 
print_r($thearrayfromarr[$i]); 
} 

あなたがしなければ、:$thearrayfromarr[0]は[1,2,3,4]が必要です値ではなく配列を返しているからです。 あなたが何か他のものを期待しているので、これは、この行に応じて、特に重要である:

echo thearrayfromarr[0]; // It will have the value of $a[0] echo'd to me 

質問に答えるために

は、どのように私は、検索(3)の値を持つthearrayfromarr $を作るのですか?あなたはそのためのループのための必要はありません

、あなただけ行うことができます:$ thearrayfromarrが定義されて

include ('arr.php'); 

$thearrayfromarr = search(3); 
print_r($thearrayfromarr); //should return [4,5,6,7] 
+0

私はreturn $ aの部分を修正しましたが、$ thearrayfromarrに[4,5,6,7]検索(3)? –

+0

は私のポストに答えを加えました。 – Deleteman

関連する問題