現在の言語: 日本語 |
配列要素の上書き(2) |
配列関連 |
class test1
{
function test1():void
{
$user1 = ['name' => 'tanaka', 'age' => 30];
$user2 = ['name' => 'sato', 'age' => 25];
$user = [];
$user[] = $user1;
$user[] = $user2;
for ($i = 0; $i < count($user); $i++) {
// $user[$i](各ユーザーの配列)の 'name' をチェック
if (isset($user[$i]['name']) && $user[$i]['name'] === "sato")
{
if (isset($user[$i]['age']))
{
$user[$i]['age'] = 20; // 元の配列を直接更新
}
}
}
print_r($user);
/*
Array
(
[0] => Array
(
[name] => tanaka
[age] => 30
)
[1] => Array
(
[name] => sato
[age] => 20
)
)
*/
}
function test2():void
{
$user1 = ['name' => 'tanaka', 'age' => 30];
$user2 = ['name' => 'sato', 'age' => 25];
$user = [];
$user[] = $user1;
$user[] = $user2;
foreach ($user as &$tmp) { // & を使って直接参照する
if (($tmp['name'] ?? '') === "sato") {
$tmp['age'] = 20;
}
}
print_r($user);
/*
Array
(
[0] => Array
(
[name] => tanaka
[age] => 30
)
[1] => Array
(
[name] => sato
[age] => 20
)
)
*/
unset($tmp); // 参照を解除します
}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
echo "</pre>";
class test1
{
function test1():void
{
$user1 = ['name' => 'tanaka', 'age' => 30];
$user2 = ['name' => 'sato', 'age' => 25];
$user = [];
$user[] = $user1;
$user[] = $user2;
for ($i = 0; $i < count($user); $i++)
{
// Check 'name' for $user[$i] (each user's array)
if (isset($user[$i]['name']) && $user[$i]['name'] === "sato")
{
if (isset($user[$i]['age'])))
{
$user[$i]['age'] = 20; // Update the original array directly
}
}
}
print_r($user);
/*
Array
(
[0] => Array
(
[name] => tanaka
[age] => 30
)
[1] => Array
(
[name] => sato
[age] => 20
)
)
*/
}
function test2():void
{
$user1 = ['name' => 'tanaka', 'age' => 30];
$user2 = ['name' => 'sato', 'age' => 25];
$user = [];
$user[] = $user1;
$user[] = $user2;
foreach ($user as &$tmp) { // Direct reference using &
if (($tmp['name'] ?? '') === "sato")
{
$tmp['age'] = 20;
}
}
print_r($user);
/*
Array
(
[0] => Array
(
[name] => tanaka
[age] => 30
)
[1] => Array
(
[name] => sato
[age] => 20
)
)
*/
unset($tmp); // Release reference
}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
echo "</pre>";
| 著作権情報 |
| ホームページおよびアプリ等に掲載されている情報等については、いかなる保障もいたしません。 ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、ホームページおよびアプリ等を利用したいかなる理由によっての障害等が発生しても、 その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |