PHP

[PHP]配列演算

配列演算


PHP

$a = array('a' => 'b','c'=>'d','e'=>'f' );
$b = array('g' => 'h','i'=>'j','k'=>'l','a'=>'あ' );
$c = $a+$b;
foreach ($c as $key => $value) {
	echo $key.' : '.$value.'<br/>';
}

出力結果



PHP

$a = array('a' => 'b','c'=>'d','e'=>'f' );
$b = array('g' => 'h','i'=>'j','k'=>'l','a'=>'あ' );
$c=array_merge($a,$b);
foreach ($c as $key => $value) {
	echo $key.' : '.$value.'<br/>';
}

出力結果



PHP

$a = array('a','b','c');
$b = array('d','e','f','g');
$c = $a+$b;
foreach ($c as $key => $value) {
	echo $key.' : '.$value.'<br/>';
}

出力結果



PHP

$a = array('a','b','c');
$b = array('d','e','f','g');
$c=array_merge($a,$b);
foreach ($c as $key => $value) {
	echo $key.' : '.$value.'<br/>';
}

出力結果



下記はエラーになる。

$c = $a-$b;
$c = $a*$b;
$c = $a/$b;

[PHP]指定フォルダのファイル一覧を取得

指定フォルダのファイル一覧を取得

<ul>
<?php
$tmp=getFiles('./image/');
foreach ($tmp as $key => $value) {
	echo '<li>'.$value.'</li>';
}
function getFiles($targetDir){
    $tmp=array();
    $pDir=opendir($targetDir);
	while( false!==( $fileName = readdir($pDir) ) ){
		if($fileName !== '.' && $fileName !== '..' && !is_dir($targetDir.$fileName)){
            $tmp[]=$fileName;
        }
	}
	closedir( $pDir );
    return $tmp;
}
?>
</ul>

Sample

[CakePHP 2.x]checkboxでvalueを0に出来ない

checkboxでvalueを0に出来ない

この方法だと出来ない。

<?php
$options = array('hiddenField' => false,'value'=>'0');
echo $this->form->checkbox('samples.check1.', $options);
echo '1-A<br/>';
$options = array('hiddenField' => false,'value'=>'1');
echo $this->form->checkbox('samples.check1.', $options);
echo '1-B';
?>

出力結果

<input type="checkbox" name="data[samples][check1][]"  value="1" id="samplesCheck1"/>1-A<br/>
<input type="checkbox" name="data[samples][check1][]"  value="1" id="samplesCheck1"/>1-B

理由はFormHelper.phpのcheckboxメソッドに下記の処理があるため

if (empty($options['value'])) {
  $options['value'] = 1;
}

しかし、下記のやり方だと出来る。
ただし、<div>と<label>が勝手に付いてしまう。

<?php
$label=array('2-A','2-B','2-C','2-D');
echo $this->Form->input('check2', array('type' => 'select',
                                       'multiple' => 'checkbox',
                                       'options' => $label,
                                       'div'=>false,
                                       'label'=>false,
                                       'hiddenField'=>false,
                                       'before'=>'',
                                       'after'=>'',
                                       'between'=>'',
                                       'value' => array(0, 2)
                                       )
                         );
?>

出力結果

<div class="checkbox"><input type="checkbox" name="data[samples][check2][]" checked="checked" value="0" id="SamplesCheck20" /><label for="SamplesCheck20" class="selected">2-A</label></div>
<div class="checkbox"><input type="checkbox" name="data[samples][check2][]" value="1" id="SamplesCheck21" /><label for="SamplesCheck21">2-B</label></div>
<div class="checkbox"><input type="checkbox" name="data[samples][check2][]" checked="checked" value="2" id="SamplesCheck22" /><label for="SamplesCheck22" class="selected">2-C</label></div>
<div class="checkbox"><input type="checkbox" name="data[samples][check2][]" value="3" id="SamplesCheck23" /><label for="SamplesCheck23">2-D</label></div>

selectメソッドでも出来る。

<?php
$label=array('2-A','2-B','2-C','2-D');
echo $this->Form->select('check3',
                         $label,
                         array('multiple' => 'checkbox',
                               'div'=>false,
                               'label'=>false,
                               'hiddenField' => false,
                               'class'=>'testClass'
                         )
                         );
?>

sample

[CakePHP 2.x]form->radioのvalue値を指定する。

form->radioのvalue値を指定する。

<?= $this->Form->create('samples', array('type' => 'post', 'action' => 'sample1')); ?>
<ul class="info-list">
    <li>
        <label class="radio">
<?php
$options = array('value1'=>'ラベル1','value2'=>'ラベル2','value3'=>'ラベル3','value4'=>'ラベル4');
$attributes = array("legend" => false,
                    'label'=> false,
                    'separator'=>'</label></li><li class="radio"><label class="radio">',
                    'value'=>'value1'
                    );
echo $this->form->radio('radioGroup1', $options, $attributes);
?>
        </label>
    </li>
</ul>
<div class="textcenter margin-top1"><button type="submit" class="btn btn-wide3">submit</button></div>
<?= $this->form->end() ?>

サンプル

[PHP]preg_replaceで複数の文字列置換

preg_replaceで複数の文字列置換

<?php
$string='ABC DEF GHI JKL MNO ABC DEF GHI JKL';
$pattern=array("/ABC/","/DEF/","/MNO/");
$replace=array('あいう','えおか','ほげ');
$result=preg_replace($pattern, $replace, $string);
echo $result;
?>

結果

あいう えおか GHI JKL ほげ あいう えおか GHI JKL

サンプル