2017-07-06 8 views
-1

ユーザがID:mysite.com/page.php?id=3を使用して私のページにアクセスする場合、配列にIDが定義されているかどうかをPHPが確認したい場合は、定義されたIDに従って同じ配列の複数のユーザ情報をページに返します。配列内のisset IDが同じ配列の定義されたIDから値を取得しますか?

マイコード:

$userinfo = [ 
     ['id' => 3, 'name' => 'username3', 'phone' => '3333'], 
     ['id' => 2, 'name' => 'username2', 'phone' => '2222'], 
     ['id' => 1, 'name' => 'username1', 'phone' => '1111'] 
    ]; 

if (isset($_GET['id']) && isset($userinfo[$_GET['id']])) { 
    $name = $userinfo[$_GET['name']]; // If I access PHP with '?id=3' wanna 'username3'. 
    $phone = $userinfo[$_GET['phone']]; // It stores id 3 user phone: '3333' 
    } 

echo $name; // It returns 'name' from array. 
echo $phone; // It returns 'phone' from array. 

それが唯一のベースだ、私はそれがない作品、コードで任意のヘルプを行う知っていますか?前もって感謝します。

+0

これにループが必要です –

答えて

1

あなたが必要なもののために、配列をフィルタリングすることができます。

$userinfo = [ 
    ['id' => 3, 'name' => 'username3', 'phone' => '3333'], 
    ['id' => 2, 'name' => 'username2', 'phone' => '2222'], 
    ['id' => 1, 'name' => 'username1', 'phone' => '1111'] 
]; 

$user = null; 
if (isset($_GET["id"])) { 
    $found = array_filter($userinfo, function ($user) { 
      return isset($user["id"]) && $user["id"] == $_GET["id"]; 
    }); // This will find all users with that id, in case there's more. 
    $user = !empty($found)?current($found):null; //current() at this point gets the first entry in $found 
} 
if ($user != null) { 
    echo $user["name"]; 
    echo $user["phone"]; 
} 

の詳細についてarray_filterをチェックしてください。

+0

助けてくれてありがとう、友人! –

+0

Alive to Dieコードは良いですが、私のコードによれば、いくつかの問題がありました。これは素晴らしいものですが、ここで問題はありません!ありがとうございました。 –

2
$userinfo = [ 
     ['id' => 3, 'name' => 'username3', 'phone' => '3333'], 
     ['id' => 2, 'name' => 'username2', 'phone' => '2222'], 
     ['id' => 1, 'name' => 'username1', 'phone' => '1111'] 
    ]; 
if (isset($_GET['id'])){ 
    foreach($userinfo as $user){ 
     if($user['id']==$_GET['id']){ 
      $name = $user['name']; 
      $phone = $user['phone']; 
     } 
    } 
} 
echo $name; 
echo $phone; 
+0

ありがとうございました! –

0

この機能は、関連する配列の任意の深さに使用できます。この関数の制約は、キー値が配列内のどこにも繰り返されないということです。

<?php 
function assoc_in_array($array, $key, $key_value){ 
     $within_array = false; 
     foreach($array as $k=>$v){ 
      if(is_array($v)){ 
       $within_array = assoc_in_array($v, $key, $key_value); 
       if($within_array == true){ 
        break; 
       } 
      } else { 
       if($v == $key_value && $k == $key){ 
        $within_array = true; 
        break; 
       } 
      } 
     } 
     return $within_array; 
} 
$test = [ 
      ['id' => 3, 'name' => 'username3', 'phone' => '3333'], 
      ['id' => 2, 'name' => 'username2', 'phone' => '2222'], 
     ]; 
var_dump(assoc_in_array($test, 'id', '3')); 
?> 
+0

ありがとうございました! –

関連する問題