配列操作の問題

WBOY
WBOYオリジナル
2016-06-23 13:56:52755ブラウズ

$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 になります。すべて削除します


Reply Discussion (Solution)

$ a = Count ($ aa);

$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);

私はあなたのコードがとても好きです。 。しかし、このように削除します。 。これはすべて動的です。 。


$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] ? $value[0];
}
}
ロジックはシンプルで保守が簡単です。 $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] ? $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"); も追加されます。このロジックはどうやって書けばいいのでしょうか


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。