2017-07-05 15 views
1

私はPHPを初めて使いました。可能であれば、いくつかの支援が必要です。オブジェクトを使用せずに各要素に2つの変数を持つPHP配列を作成するにはどうすればよいですか?

私は、これは、アレイ

array("Name" => $userName, "Age" => $userAge); 

を一人のユーザーのために働くが、私はすべての私はそれをどのように行うだろう名前と年齢を持つことになります複数のユーザーを追加したいと言うことができますか?渡すのではなく、$userNameというユーザー名の配列を渡す必要があり、$userageの代わりにユーザーの年齢の配列を使用すると、それは多次元になりますか?

また私の目的のために、私はユーザ名とユーザ名をオブジェクトに入れて、それを単に配列に追加することはできません。

答えて

3

一つの方法は次のとおりです。

array(
    array("Name" => $userName, "Age" => $userAge), 
    array("Name" => $userName1, "Age" => $userAge1), 
    array("Name" => $userName2, "Age" => $userAge2) 
    ... 
); 
1

型キャスト配列に変数$ユーザ名と$ userAge - さらに処理するためにそれらの上

$userName = (array)$userName; 
$userAge = (array)$userAge; 

反復。配列のサイズが1つまたは複数の場合は、それでは違いはありません。

+0

これはどのように複数のユーザーの配列を作成しますか? 1ユーザーの配列を作成するだけです。 – Barmar

2

ここでは、問題を解決するためのサンプルコードを示します。 2つの入力配列(名前と年齢)は同じサイズである必要はなく、対応する名前または年齢がないデフォルト値(名前は「N/A」、年齢は-1)が挿入されます。

$userNames = ['name1', 'name2', 'name3', 'name4']; 
$userAges = [26,14,99]; 
$userNamesAndAges = []; 

for ($i=0; $i < max(count($userNames), count($userAges)); $i++) { 
    if (isset($userNames[$i])) { 
     $userName = $userNames[$i]; 
    } else { 
     $userName = 'N/A'; 
    } 

    if (isset($userAges[$i])) { 
     $userAge = $userAges[$i]; 
    } else { 
     $userAge = -1; 
    } 

    $userNamesAndAges[] = [ 
     'Name' => $userName, 
     'Age' => $userAge 
    ]; 
} 

foreach ($userNamesAndAges as $obj) { 
    $name = $obj['Name']; 
    $age = $obj['Age']; 
    echo("Name: $name, Age: $age<br>"); 
} 

出力:

名:NAME1、年齢:26
名:NAME2、年齢:14
名:NAME3、年齢:99
名:NAME4、年齢:-1

関連する問題