ホームページ >バックエンド開発 >PHPチュートリアル >配列操作の問題
$bb=array("id"=>"1","wo2"=>"8")
$aa=array("id"=>"1","wo2"=>"5) ","wo3"=>"3")
2 つの配列を $cc=array("id"=>"1","wo2"=>"8","wo3 ") に演算する方法= & gt;" delete ")
WO2 AA は BB より小さいので、BB が存在しないため、8 wo3 は 5 WO3 になります。すべて削除します
$b=count($bb);
$ar=$a>b?$aa:$bb;
$ar2=$a foreach($ar as $k=> ;$v){
$cc[$k]=isset($ar2[$k])&&$ar2[$k]>$v?$ar2[$k]:$v;
}
$ cc[$k]=isset($ar2[$k])&&$ar2[$k]>$v?$ar2[$k]:'削除'
<?php$bb=array("id"=>"1","wo2"=>"8");$aa=array("id"=>"1","wo2"=>"5","wo3"=>"3");//简单的处理foreach ($aa as $key => &$value) { if(isset($bb[$key])){ $aa[$key] = $aa[$key]>$bb[$key]?$aa[$key]:$bb[$key]; }else{ $aa[$key] = "delete"; }}var_dump($aa);$aa=array("id"=>"1","wo2"=>"5","wo3"=>"3");//第二种用回调函数处理$bbkeys = array_keys($bb);array_walk($aa, function(&$item,$key) use($bb,$bbkeys){ if(in_array($key, $bbkeys)){ $item = $item>$bb[$key]?$item:$bb[$key]; }else{ $item="delete"; }});var_dump($aa);?>
$bb=array ("id "=>"1","wo2"=>"8");
$aa=array("id"=>"1","wo2"=>"5","wo3 "=> ;"3");
$out = array();
$cc = array_merge_recursive($bb,$aa);// 2 つの配列をマージします
foreach ($cc as $key => $value) {
if (!is_array($value)){
$out[$key] = '削除';
}else{
$out[$key] = $value[0] >= $value[1] ? 0] : $value[1];
}
}
var_dump($out);
$bb=array("id"=>"1","wo2"=>"8");$aa=array("id"=>"1","wo2"=>"5","wo3"=>"3");$cc=array_merge($aa,$bb);$cc['wo3']='delete';print_r($cc);
Array( [id] => 1 [wo2] => 8 [wo3] => delete)
$bb=array("id"=>"1","wo2"=>"8");$aa=array("id"=>"1","wo2"=>"5","wo3"=>"3");$cc=array_merge($aa,$bb);$cc['wo3']='delete';print_r($cc);
私はあなたのコードがとても好きです。 。しかし、このように削除します。 。これはすべて動的です。 。
$out = array();
$cc = array_merge_recursive($bb,$aa);// 2 つの配列をマージします
foreach ($cc as $) key => $value) {
if(!is_array($value)){
$out[$key] = '削除'
}else{
$out[$key] = $value[0] > = $value[1] ? $value[0];
}
}
ロジックはシンプルで保守が簡単です。 $bb=array(" id"=>"1","wo2"=>"8");
$aa=array("id"=>"1","wo2"=>"5) ","wo3"= >"3");
$out = array();
if(!is_array($value)){
$out[$key] = '削除'
}else{
$out[$key] = $value[0] >= $value [1] ? $value [0] : $value[1]
var_dump($out);
キャッシュを書き込むとき、各レコードには更新時間を保存する時間フィールドがあります
サーバーに送信するたびに、クライアントの時間フィールドの内容と対応する ID をサーバーに送信し、比較する必要があります
クライアントの場合 クライアントの時間がサーバーの時間より短い場合、サーバーはこのコンテンツをクライアントに送信する必要があります。 。 。データベースは、replace into メソッドを使用して発行されます。それ以上の場合、クライアントの ID がサーバーに送信され、サーバーの ID が見つからない場合は、データベースをクライアントに発行する必要はありません。サーバーは、端末 ID フィールドの内容を削除してクライアントに通知します
たとえば、クライアントは
$bb=array("id"=>"1") ,"time"=>"8","neirong"= >"www");
たとえば、サーバーは
$cc=array("id"=>"1","time"=> ;"8","neirong"=>"www");
$dd はクライアントに送信する必要がある 2 次元配列です
時刻が同じであるため、クライアントに送信する必要はありませんclient なので空です
If
たとえば、クライアントは
$bb=array("id"=>" 2","time"=>"5","neirong"=>"www) ");
たとえば、サーバーは
$cc=array("id"=>"2","time"= >"8","neirong"=>"www");
とは受信したのは array("id"=>"1","time"=>"8","neirong"=> ;"www"); この配列は $dd に追加されます
If
たとえば、クライアントは
$bb=array("id"=>"3","time"=>"5"," neirong"=>"www");
たとえば、サーバーは
$cc =array();
そして、各データの比較後に
array("id"=>"1","neirong"=>" delete"); も追加されます。このロジックはどうやって書けばいいのでしょうか