現在の言語: 日本語 |
連想配列(3) |
配列関連 |
class test1
{
private function sampleSelectTable():object
{
$users = new stdClass;
// データベース接続設定(仮の値)
$dsn = 'mysql:host=localhost;dbname=test_db;charset=utf8mb4';
$user = 'user';
$password = 'password';
try {
$pdo = new PDO($dsn, $user, $password);
// エラーモードを設定しておくとデバッグしやすい
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//name:名前
//age:年齢
$stmt = $pdo->query("select name, age from users");
//PDO::FETCH_OBJを指定すると
//各レコードがstdClass オブジェクトとしてフェッチされます
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
} catch (PDOException $e) {
echo "データベース接続エラー: " . $e->getMessage();
}
return $users;
}
function test1()
{
$obj = $this->sampleSelectTable();
//[取得した例]
/*
$obj = [
// インデックス 0
(object) ["name" => "yamada", "age" => 20],
// インデックス 1
(object) ["name" => "tanaka", "age" => 21]
];
*/
//$objはstdClassの配列になります
$no = 1;
foreach ($obj as $user)
{
//連想配列ではなく、アロー演算子(->)でプロパティにアクセスします
echo $no."件目".PHP_EOL;
echo "名前:" . $user->name.PHP_EOL;
echo "年齢:" . $user->age.PHP_EOL;
$no++;
}
//[結果の例]
/*
1件目
名前:yamada
年齢:20
2件目
名前:tanaka
年齢:21
*/
//$ary = (array)$obj;
$no = 1;
foreach ($obj as $user) {
// $obj は stdClass オブジェクト (1件)
$ary = (array)$user;
// $user_array は連想配列 (1件)
// Array ( [id] => 1 [name] => 山田 [age] => 30 ) になる
echo $no."件目".PHP_EOL;
foreach ($ary as $key => $value)
{
echo $key . ': ' . $value . PHP_EOL;
}
$no++;
}
//[結果の例]
/*
1件目
name: yamada
age: 20
2件目
name: tanaka
age: 21
*/
}
function test2()
{
$ary = [];
$ary1 = [
"name"=>"tanaka",
"age" =>21
];
$ary[]=$ary1;
$ary2 = [
"name"=>"tanaka",
"age" => 20
];
$ary[]=$ary2;
for($i=0; $iname.PHP_EOL;
echo "age:".$obj->age.PHP_EOL;
}
//[結果]
/*
i:0
name:tanaka
age:21
i:1
name:tanaka
age:20
*/
}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
echo "</pre>";
class test1
{
private function sampleSelectTable():object
{
$users = new stdClass;
// Database connection settings (tentative values)
$dsn = 'mysql:host=localhost;dbname=test_db;charset=utf8mb4';
$user = 'user';
$password = 'password';
try {
$pdo = new PDO($dsn, $user, $password);
// Setting the error mode makes debugging easier.
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//name: Name
//age: Age
$stmt = $pdo->query("select name, age from users");
//If PDO::FETCH_OBJ is specified
//Each record will be fetched as a stdClass object.
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
} catch (PDOException $e) {
echo "Database connection error: " . $e->getMessage();
}
return $users;
}
function test1()
{
$obj = $this->sampleSelectTable();
//[Retrieved example]
/*
$obj = [
// Index 0
(object) ["name" => "yamada", "age" => 20],
// Index 1
(object) ["name" => "tanaka", "age" => 21]
];
*/
// $obj is an array of stdClass.
$no = 1;
foreach ($obj as $user)
{
// Access properties with the arrow operator (->) instead of an associative array.
echo $no."item".PHP_EOL;
echo "Name:" . $user->name.PHP_EOL;
echo "Age:" . $user->age.PHP_EOL;
$no++;
}
//[Example Result]
/*
1st Result
Name: Yamada
Age: 20
2nd Result
Name: Tanaka
Age: 21
*/
//$ary = (array)$obj;
$no = 1;
foreach ($obj as $user) {
// $obj is a stdClass object (1 result)
$ary = (array)$user;
// $user_array is an associative array (1 result)
// Becomes Array ( [id] => 1 [name] => Yamada [age] => 30 )
echo $no.item.PHP_EOL;
foreach ($ary as $key => $value)
{
echo $key . ': ' . $value . PHP_EOL;
}
$no++;
}
//[Example Result]
/*
1st Result
name: Yamada
age: 20
2nd item
name: tanaka
age: 21
*/
}
function test2()
{
$ary = [];
$ary1 = [
"name"=>"tanaka",
"age" =>21
];
$ary[]=$ary1;
$ary2 = [
"name"=>"tanaka",
"age" => 20
];
$ary[]=$ary2;
for($i=0; $iname.PHP_EOL;
echo "age:".$obj->age.PHP_EOL;
}
//[result]
/*
i:0
name:tanaka
age:21
i:1
name:tanaka
age:20
*/
}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
echo "</pre>";
| 著作権情報 |
| ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。 ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、ホームページおよびアプリ等を利用したいかなる理由によっての障害等が発生しても、 その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |