مطابقة صفائف في بي
سؤال
وأنا بحاجة الى التحقق ما إذا كانت مجموعة معينة سوف تتطابق مع مجموعة أخرى. أنا لا يمكن معرفة كيف إما لمعالجة مجموعة الأولى، أو إلى تطابق ذلك بطريقة أخرى.
وأحتاج لمطابقة هذه المجموعة:
Array
(
[1] => site
[2] => blog
[3] => index.php
)
ولمطابقة هذه:
Array
(
[site] => Array
(
[path] => site
[name] => site
[kind] => directory
[content] => Array
(
[404] => Array
(
[path] => site/404.php
[name] => 404.php
[extension] => php
[kind] => file
)
[blog] => Array
(
[path] => site/blog
[name] => blog
[kind] => directory
[content] => Array
(
[contact] => Array
(
[path] => site/blog/contact.php
[name] => contact.php
[extension] => php
[kind] => file
)
[index] => Array
(
[path] => site/blog/index.php
[name] => index.php
[extension] => php
[kind] => file
)
[about] => Array
(
[path] => site/blog/about.php
[name] => about.php
[extension] => php
[kind] => file
)
)
)
[index] => Array
(
[path] => site/index.php
[name] => index.php
[extension] => php
[kind] => file
)
)
)
)
وعودة مجموعة محتوى الملف:
[index] => Array
(
[path] => site/blog/index.php
[name] => index.php
[extension] => php
[kind] => file
)
مساعدة سيكون موضع تقدير كبير!
المحلول
ومؤشر فقط إلى مجموعة:
$b[$a[1]]['content'][$a[2]]['content'][str_replace('.php', '', $a[3])]
إذا المدخلات الخاصة بك يمكن أن يكون طول متغير، القيام بذلك في حلقة بدلا من ذلك.
نصائح أخرى
ولذا عليك ...
$array2[$array[1]][content][$array[2]][substr(0, stripos($array[3], "."), $array[3])]
وأو شيء قريب ...
هل يمكنني أن تأخذ على أنها تعني أنك تريد التحقق من أن قائمة الفهارس في مجموعة أكبر والعودة أية نتائج متاحة / مطابقة؟ إذا كان الأمر كذلك، وعلى افتراض مجموعة الأولى يسمى $indexes
ويسمى الثاني $results
يمكن أن تفعله:
$found = array();
foreach($indexes as $index) {
if(isset($results[$index])) {
$found[] = $results[$index]['content'];
}
}
والآن كنت قد $found
مع قائمة من كافة إدخالات المحتوى الموجود في $ النتائج التي تطابق الأرقام القياسية في $ الفهارس. على أمل أن يساعد.
$path = array('site', 'blog', 'index.php');
$node = array(...); // the tree
for ($i = 0; $i < count($path) && !is_null($node); ++$i) {
$p = $path[$i];
$items = $i ? $node['content'] : $node;
$n = null;
foreach ($items as $it) {
if ($it['name'] == $p) {
$n = $node['content'][$p];
break;
}
}
$node = $n;
}