PHP練習問題

PHP練習問題 問67


新人に向けた超簡単な初心者向け問題です。

配列、ループ、条件分岐などの簡単なサンプルから問題を出してきます。
簡単なので、是非挑戦してください。

PHPをWindowsで実行したいのであれば、XAMPP(ザンプ)をインストールすると、自分のPCでも簡単に動作させることが出来ます。

インストール方法は、以下のサイトから。

WINDOWS XAMPP にて LARAVEL をインストール (XAMPP V1.8.3インストール)


phpedu67.php

<?php
	function change(&$arr, $x, $y){
		$arr[$y][$x] = $arr[$x][$y];
	}
?>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">

		<title>tech.pjin.jp HTML5 Template</title>

		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">

		<!--[if lt IE 9]>
			<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
			<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
		<![endif]-->
	</head>
	<body>
		<div class="container">
			<div class="page-header">
				<h1><i class="fa fa-check-square"></i> PHP問題67</h1>
			</div>
			<div class="jumbotron">
			<?php
				$arr = [[9, 2, 3], [6, 2, 5]];
				change($arr, 1, 2);
				change($arr, 0, 1);

				echo 'a';
				if([  a  ]){
					echo 'b';
				}else{
					echo '*';
				}
				if([  b  ]){
					echo 'c';
				}
				echo 'd';
			?>
			</div>
		</div>
		<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
		<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
	</body>
</html>


※CSSには、Bootstrap、Font-Awesomeを利用しています。
※Javascriptには、jQuery1.11.3を利用しています。

問題:abcd と表示したい場合、[ a ][ b ]に入る適切なものはどれか選択して下さい。(複数選択可)

  1. a:[$arr[1][2] === 5] b:[$arr[2][0] === 2]
  2. a:[$arr[1][2] === 5] b:[$arr[2][1] === 6]
  3. a:[$arr[2][1] === 5] b:[$arr[1][0] === 9]
  4. a:[$arr[2][1] === 5] b:[$arr[1][1] === 2]

正解:3.a:[$arr[2][1] === 5] b:[$arr[1][0] === 9]、4.a:[$arr[2][1] === 5] b:[$arr[1][1] === 2]

前回と同様で、よく見ないと分からない問題で、忍耐強く見てほしいです。
配列のインデックス(添え字)は、0から始まることを忘れないでください。

&は参照渡しとなり、呼び出し元の変数に影響を与えます。
changeという関数内で入替を行った結果を、忍耐強く想像するわけです。

元々の配列の内容
[0] => Array(
 [0] => 9
 [1] => 2
 [2] => 3
)
[1] => Array(
 [0] => 6
 [1] => 2
 [2] => 5
)

変換後の配列の内容
[0] => Array(
 [0] => 9
 [1] => 2
 [2] => 3
)
[1] => Array(
 [0] => 2
 [1] => 2
 [2] => 5
)
[2] => Array(
 [1] => 5
)

1次元目の配列が増えていることがポイントです。
後はインデックスの中身を確認しながら数字を確認すると内容が分かります。

通常のプログラムでは、入替が発生する場合が多いのですが、今回は代入のみのプログラムになっています。

選択肢1は、1:2の値は5、2:0の値はUndefined offsetになります。インデックスがないですからね。
選択肢2は、1:2の値は5、2:1の値は5になります。
選択肢3は、2:1の値は5、1:0の値は9になります。
選択肢4は、2:1の値は5、1:1の値は2になります。

普通に見るだけで疲れますが、入替とか発生するとなおのこと辛いです。
あまりこういったコードは見ないですが、もうちょっと分かりやすくする仕掛けが必要だと思います。

配列の出力はvar_dumpではなく、print_rにて出力しております。

  • このエントリーをはてなブックマークに追加

PAGE TOP