<?php
0 => array("v1" => "aa", "v2" => ""), 1 => array("v1" => "bb", "v2" => ""), 2 => array("v1" => "cccc", "v2" => ""), 3 => array("v1" => "bb", "v2" => ""), 4 => array("v1" => "aa", "v2" => ""), 5 => array("v1" => "bb", "v2" => ""), 6 => array("v1" => "cccc", "v2" => ""), 7 => array("v1" => "bb", "v2" => ""), );
0 => array("aa" => "nnnn", "bb" => "nnn", "cccc" => "n"), 1 => array("aa" => "ddd", "bb" => "dd"), );
function processNeedle(&$haystack, $needle) {
$needleLen = count($needle); $haystackLen = count($haystack);
for ($i = 0; $i < ($haystackLen - $needleLen + 1); $i++) {
$match = true;
for ($j = 0; $j < $needleLen; $j++) {
if ($haystack[$i + $j]["v1"] != $needleKeys[$j]) {
$match = false;
break;
}
}
if ($match) {
$matches[] = $i;
$i += $needleLen - 1;
}
}
forEach ($matches as $startIdx) {
for ($j = 0; $j < $needleLen; $j++) {
$haystack[$startIdx + $j]["v2"] = $needleValues[$j];
}
}
}
forEach ($needles as $needle) {
processNeedle($haystack, $needle);
}
PD9waHAKCiRoYXlzdGFjayA9IGFycmF5KAogICAgMCA9PiBhcnJheSgidjEiID0+ICJhYSIsICAgInYyIiA9PiAiIiksIAogICAgMSA9PiBhcnJheSgidjEiID0+ICJiYiIsICAgInYyIiA9PiAiIiksCiAgICAyID0+IGFycmF5KCJ2MSIgPT4gImNjY2MiLCAidjIiID0+ICIiKSwKICAgIDMgPT4gYXJyYXkoInYxIiA9PiAiYmIiLCAgICJ2MiIgPT4gIiIpLCAKICAgIDQgPT4gYXJyYXkoInYxIiA9PiAiYWEiLCAgICJ2MiIgPT4gIiIpLAogICAgNSA9PiBhcnJheSgidjEiID0+ICJiYiIsICAgInYyIiA9PiAiIiksIAogICAgNiA9PiBhcnJheSgidjEiID0+ICJjY2NjIiwgInYyIiA9PiAiIiksCiAgICA3ID0+IGFycmF5KCJ2MSIgPT4gImJiIiwgICAidjIiID0+ICIiKSwgCik7CgokbmVlZGxlcyA9IGFycmF5KCAKICAgIDAgPT4gYXJyYXkoImFhIiA9PiAibm5ubiIsICJiYiIgPT4gIm5ubiIsICJjY2NjIiA9PiAibiIpLAogICAgMSA9PiBhcnJheSgiYWEiID0+ICJkZGQiLCAgImJiIiA9PiAiZGQiKSwKKTsKCmZ1bmN0aW9uIHByb2Nlc3NOZWVkbGUoJiRoYXlzdGFjaywgJG5lZWRsZSkgewogICAgJG5lZWRsZUtleXMgPSBhcnJheV9rZXlzKCRuZWVkbGUpOwogICAgJG5lZWRsZVZhbHVlcyA9IGFycmF5X3ZhbHVlcygkbmVlZGxlKTsKICAgICRuZWVkbGVMZW4gPSBjb3VudCgkbmVlZGxlKTsKICAgICRoYXlzdGFja0xlbiA9IGNvdW50KCRoYXlzdGFjayk7CiAgICAKICAgICRtYXRjaGVzID0gYXJyYXkoKTsKICAgIGZvciAoJGkgPSAwOyAkaSA8ICgkaGF5c3RhY2tMZW4gLSAkbmVlZGxlTGVuICsgMSk7ICRpKyspIHsKICAgICAgICAkbWF0Y2ggPSB0cnVlOwogICAgICAgIGZvciAoJGogPSAwOyAkaiA8ICRuZWVkbGVMZW47ICRqKyspIHsKICAgICAgICAgICAgaWYgKCRoYXlzdGFja1skaSArICRqXVsidjEiXSAhPSAkbmVlZGxlS2V5c1skal0pIHsKICAgICAgICAgICAgICAgICRtYXRjaCA9IGZhbHNlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRtYXRjaCkgewogICAgICAgICAgICAkbWF0Y2hlc1tdID0gJGk7CiAgICAgICAgICAgICRpICs9ICRuZWVkbGVMZW4gLSAxOwogICAgICAgIH0KICAgIH0KICAgIAogICAgZm9yRWFjaCAoJG1hdGNoZXMgYXMgJHN0YXJ0SWR4KSB7CiAgICAgICAgZm9yICgkaiA9IDA7ICRqIDwgJG5lZWRsZUxlbjsgJGorKykgewogICAgICAgICAgICAkaGF5c3RhY2tbJHN0YXJ0SWR4ICsgJGpdWyJ2MiJdID0gJG5lZWRsZVZhbHVlc1skal07CiAgICAgICAgfQogICAgfQp9Cgpmb3JFYWNoICgkbmVlZGxlcyBhcyAkbmVlZGxlKSB7CiAgICBwcm9jZXNzTmVlZGxlKCRoYXlzdGFjaywgJG5lZWRsZSk7Cn0KcHJpbnRfcigkaGF5c3RhY2spOw==