下のURLを開いた人同士で対戦できます。
https://arahkesh.kysaeed.com
TODO:
- 制限時間を作る
- 切断の扱いを決める
- もっと軽快にカードを出せるようにしたほうがいいかも
- 友だちと対戦機能
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NullCheck1D
{
class Program
{
static void Main(string[] args)
{
// チェック対象の配列
Object[] testArray1D = { new object(), new object(), null, new object() };
// nullの存在をチェック
if (Array.IndexOf(testArray1D, null) > -1)
{
Console.WriteLine("nulあり");
}
else
{
Console.WriteLine("nulなし");
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// 多次元配列のnullチェック
/// </summary>
namespace NullCheck2D
{
class Program
{
static void Main(string[] args)
{
// チェック対象の配列配列(2次元配列)
// ([,]は[2,2]を省略した書き方です)
Object[,] testArray2D = new Object[,]
{
{ new Object(), new Object() },
{ null, new Object() }
};
// nullの存在をチェック
if (hasNull(testArray2D))
{
Console.WriteLine("nulあり");
}
else
{
Console.WriteLine("nulなし");
}
}
/// <summary>
/// 配列のnullチェック
/// </summary>
/// <param name="target">チェック対象の配列</param>
/// <returns>true=nullあり / false=nullなし</returns>
static bool hasNull(Array target)
{
foreach (Object element in target)
{
if (element == null)
{
return true;
}
}
return false;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// 配列のnullチェック(1次元配列、多次元配列、ジャグ配列)
/// </summary>
namespace NullCheck
{
class Program
{
static void Main(string[] args)
{
// チェック対象の配列(2次元+ジャグ)
Object[,] testArray = new Object[,]
{
{ new Object(), new Object() },
{ new Object[] { new Object(), null }, new Object() }
};
// nullの存在をチェック
if (hasNull(testArray))
{
Console.WriteLine("nulあり");
}
else
{
Console.WriteLine("nulなし");
}
}
/// <summary>
/// 配列のnullチェック
/// </summary>
/// <param name="target">チェック対象の配列</param>
/// <returns>true=nullあり / false=nullなし</returns>
static bool hasNull(Array target)
{
foreach (Object element in target)
{
if (element == null)
{
return true;
}
if (element.GetType().IsArray)
{
//要素が配列の場合は、この配列チェック関数に再帰
if (hasNull((Array)element))
{
return true;
}
}
}
return false;
}
}
}
<?php
//
// 配列の中にNULLが含まれているかのチェック
//
//チェック対象の配列
$params = array(1, 2, NULL, 3);
// 配列の要素をまとめてNULLチェック
$result = in_array(NULL, $params, TRUE); // NULLチェック 戻り値TRUEでNULL有り
if($result){
print "NULLあり\n";
} else {
print "NULLなし\n";
}
?>
| id (数値) | name (文字列) | type (数値) |
|---|---|---|
| 1 | ポチ | 0(犬) |
| 2 | 猫太郎 | 1(猫) |
| 3 | ルシオ | 2(ロバ) |
<?php
//------------------------------------------------------
// Enum値の定義
//
// constなarrayを作るだけです
//
const FiendType = array(
'Dog' => 1,
'Cat'=> 2,
'Asinus' => 3,
'Human' => 10
);
//------------------------------------------------------
// Enum値を使う
//
$type = FriendType['Cat']; // typeに猫を設定します
// switch文でtype別の発言をprintしてみます
switch ($type) {
case FriendType['Dog']:
print "ワン\n";
break;
case FriendType['Cat']:
print "ニャー\n";
break;
case FriendType['Asinus']:
print "グーヒー、グーヒー\n";
break;
}
?>
※ 配列要素の参照方法が間違っていたので修正しました。<?php
//
// PHP(5.5)でEnumを使うためのクラス
//
class Enum
{
//
// Enumオブジェクトの生成
//
private static $enums = array();
public static function __callStatic($name, $arguments)
{
if (is_array($arguments[0])) {
// 重複チェック
if (isset(self::$enums[$name])) {
trigger_error(print "{$name} is exists..", E_USER_ERROR);
}
self::$enums[$name] = new Enum($arguments[0]);
} else {
if (!isset(self::$enums[$name])) {
trigger_error("Enum {$name} not found...", E_USER_ERROR);
}
return self::$enums[$name];
}
}
//
// Enumオブジェクトのメソッド
//
protected $values = array(); // Enum要素
// arrayからEnumオブジェクトを生成
protected function __construct(array $params)
{
// Enum値をプロパティへ
foreach ($params as $key => $p) {
if (!is_int($key)) {
trigger_error('Key must be an int.', E_USER_ERROR);
}
$this->values[$p] = $key;
}
}
// Enum要素の取得
public function __get($name)
{
if (!isset($this->values[$name])) {
// 存在しない要素
trigger_error("[{$name}] isn't enum element", E_USER_ERROR);
}
return $this->values[$name];
}
// 代入
public function __set($name, $value)
{
trigger_error("Enum can't set.", E_USER_ERROR);
}
}
?>
<?php
//
// 連番の定義
//
// Enum::'連番の名前'()に対して、arrayを渡すだけです。
//
Enum::FriendType(
array(
'Dog', // 犬
'Cat', // 猫
'Asinus', // ロバ
10 => 'Human' , //いつか人間のFriendができた時のために10番をHumanにしておく、なんてこともできます
)
);
?>
Enum::のあとにEnumセットの名前を書いて()の中にEnum要素の名前を配列として渡すだけです。<?php
$type = Enum::FriendType()->Cat; // typeに猫を設定します
// switch文でtype別の発言をprintしてみます
switch ($type) {
case Enum::FriendType()->Dog:
print "ワン\n";
break;
case Enum::FriendType()->Cat:
print "ニャー\n";
break;
case Enum::FriendType()->Asinus:
print "グーヒー、グーヒー\n";
break;
}
?>
ここでも、Enum::のあとにEnumセットの名前と()を書き、->で各要素にアクセスします。| id 項目番号 | message メッセージ |
|---|---|
| 1 | やあ。 |
| 2 | DBのメッセージ |
| 3 | へい!へい! |
<?php
$dbName = 'php_db'; // データベース名
$dbUser = 'php_db'; // ユーザ名
$dbPass = 'php_db'; // パスワード
// データベースへ接続する
try{
// MySQLへ接続
$pdo = new PDO(
'mysql:host=localhost; dbname='.$dbName,
$dbUser,
$dbPass,
array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET CHARACTER SET utf8;')
);
}
catch(PDOException $e){
// エラー
print 'error!<BR />';
die;
}
// データベースからデータを取得
$query = $pdo->prepare('select * from messages'); // データ取得のSQL文
if( !$query->execute() ){ // SQL文を実行
// エラー
print 'execute error!<BR />';
die;
}
// データベースから取得したデータを表示
while( $row = $query->fetch(PDO::FETCH_OBJ) ){ //データベースから
print $row->id . ':'; // idフィールドの内容を表示
print $row->message . '<BR />'; // messageフィールドの内容を表示
}
?>