PHP Unset parent, если не найден в массиве - PullRequest
0 голосов
/ 07 ноября 2011

У меня проблема с отключением моих родителей, если я не нахожу иглу у своего ребенка, по какой-то причине я просто не могу заставить ее работать, независимо от того, как много разных способов я пытаюсь это сделать, может кто-то указать мне на правильное направление? Это создается в многомерном массиве с глубиной пола около 4. Вот код и пример того, как может выглядеть срез массива. В этом случае должен оставаться только Array [3], Array [1-2] должен быть удален.

array (
  1 => 
  array (
    197015 => 
    array (
      345415 => 
      array (
        'options' => 
        array (
          'Name on Credential' => '',
          'Ordination Month' => '',
          'Ordination Day' => '',
          'Ordination Year' => '',
          'Badge Choice?' => '',
        ),
        'comments' => 
        array (
          213354 => '',
        ),
        'products_name' => '',
        'products_quantity' => '',
        'delivery_country' => '',
        'customers_name' => '',
        'delivery_name' => '',
        'delivery_street_address' => '',
        'delivery_city' => '',
        'delivery_postcode' => '',
        'delivery_state' => '',
        'customers_telephone' => '',
      ),
    ),
  ),

  2 => 
  array (
    197014 => 
    array (
      345414 => 
      array (
        'options' => 
        array (
          'Name on Credential' => '',
          'Ordination Month' => '',
          'Ordination Day' => '',
          'Ordination Year' => '',
          'Badge Choice?' => '',
        ),
        'comments' => 
        array (
          213353 => '',
        ),
        'products_name' => '',
        'products_quantity' => '',
        'delivery_country' => '',
        'customers_name' => '',
        'delivery_name' => '',
        'delivery_street_address' => '',
        'delivery_city' => '',
        'delivery_postcode' => '',
        'delivery_state' => '',
        'customers_telephone' => '',
      ),
    ),
  ),

  3 => 
  array (
    197013 => 
    array (
      345412 => 
      array (
        'options' => 
        array (
          'Name on Credential' => '',
          'Ordination Month' => '',
          'Ordination Day' => '',
          'Ordination Year' => '',
        ),
        'comments' => 
        array (
          213352 => '',
        ),
        'products_name' => 'Jedi',
        'products_quantity' => '1',
        'delivery_country' => '',
        'customers_name' => '',
        'delivery_name' => '',
        'delivery_street_address' => '',
        'delivery_city' => '',
        'delivery_postcode' => '',
        'delivery_state' => '',
        'customers_telephone' => '',
      ),
      345413 => 
      array (
        'options' => 
        array (
          '' => '',
        ),
        'comments' => 
        array (
          213352 => '',
        ),
        'products_name' => '',
        'products_quantity' => '',
        'delivery_country' => '',
        'customers_name' => '',
        'delivery_name' => '',
        'delivery_street_address' => '',
        'delivery_city' => '',
        'delivery_postcode' => '',
        'delivery_state' => '',
        'customers_telephone' => '',
      ),
    ),
  ),

Вот пример последнего кода, который я попытался использовать безуспешно, если вы замените unset ($ k); с возвратом ложного; он вернет, в каком вторичном массиве появляется игла.

<code>    // array_search with recursive searching, optional partial matches and optional search by key
    function array_find_r($needle, &$haystack, $partial_matches = false, $search_keys = false) {
        if(!is_array($haystack)) return false;
        foreach($haystack as $key=>&$value) {
            $what = ($search_keys) ? $key : $value;
            if($needle===$what) return $key;
            else if($partial_matches && @strpos($what, $needle)!==false) return $key;
            else if(is_array($value) && array_find_r($needle, $value, $partial_matches, $search_keys)!==false) return $key;
        }
        unset($k);
    }

$tty = array();
foreach($datas as &$k) {
    $tty[] = array_find_r('Jedi', &$k, true, false);
}

$tty=array_filter($tty); rsort($tty);


echo '<pre>'; var_export($datas); echo '
';

1 Ответ

0 голосов
/ 08 ноября 2011

Почему бы не перенести нужные данные в новый массив и не сбросить весь старый массив?

...