現在の言語: 日本語 |
疑似構造体配列 |
配列関連 |
readonly class test {
public function __construct(
public int $num = 0,
public string $data ="",
) {}
}
class test1
{
//クラスを使った実装
function test1():void
{
$ary = [];
for($i=0; $i<3; $i++)
{
$ary[] = new test
( num:$i+1,
data:"index:$i"
);
}
for($i=0; $i< 3; $i++)
{
echo "i:$i num:".$ary[$i]->num." data:".$ary[$i]->data.PHP_EOL;
}
/*
i:0 num:1 data:index:0
i:1 num:2 data:index:1
i:2 num:3 data:index:2
*/
}
//連想配列の配列
function test2():void
{
for($i=0; $i<3; $i++)
{
$ary[] =
[
"num" => $i+1,
"data" => "index:$i"
];
}
for($i=0; $i< 3; $i++)
{
echo "i:$i num:".$ary[$i]["num"]." data:".$ary[$i]["data"].PHP_EOL;
}
/*
i:0 num:1 data:index:0
i:1 num:2 data:index:1
i:2 num:3 data:index:2
*/
}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
echo "</pre>";
readonly class test
{
public function __construct(
public int $num = 0,
public string $data ="",
) {}
}
class test1
{
//Implementation using a class
function test1():void
{
$ary = [];
for($i=0; $i<3; $i++)
{
$ary[] = new test
(
num:$i+1,
data:"index:$i"
);
}
for($i=0; $i< 3; $i++)
{
echo "i:$i num:".$ary[$i]->num." data:".$ary[$i]->data.PHP_EOL;
}
/*
i:0 num:1 data:index:0
i:1 num:2 data:index:1
i:2 num:3 data:index:2
*/
}
//Array of associative arrays
function test2():void
{
for($i=0; $i<3; $i++)
{
$ary[] =
[
"num" => $i+1,
"data" => "index:$i"
];
}
for($i=0; $i< 3; $i++)
{
echo "i:$i num:".$ary[$i]["num"]." data:".$ary[$i]["data"].PHP_EOL;
}
/*
i:0 num:1 data:index:0
i:1 num:2 data:index:1
i:2 num:3 data:index:2
*/
}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
echo "</pre>";
| 特徴 | クラスの配列 | 連想配列の配列 |
| 型の安全性 | 高い(int以外入れるとエラー) | 低い(何でも入ってしまう) |
| メモリ | 効率的(構造が固定されているため) | やや非効率(各要素がキー名文字列を持つため) |
| 手軽さ | クラス定義が必要 | 定義なしで今すぐ書ける |
| 著作権情報 |
| ホームページおよびアプリ等に掲載されている情報等については、いかなる保障もいたしません。 ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、ホームページおよびアプリ等を利用したいかなる理由によっての障害等が発生しても、 その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |