0

これを調べようとしましたが、私のような配列は見つかりませんでした。また、私が試したことは何もありませんでした.今では何度もエラーが発生しています.

103/104 のエラーにコメントします。ある時点でシリアル化された配列からこれを取得する必要があるため、変換 (申し訳ありません) は、削除する必要があるものを探すことができる関数を作成しようとしています。

注:配列でそれを行う方法もわからないため、完全なレコードも追加する必要がありますが、別の質問としてそれを尋ねる必要があります。

私が配列を検索するすべてのものは、私が持っているものを正確に見つけることができません.[0] =>上の配列として. したがって、ここで質問します。

助けてくれてありがとう、ここに私のphpコードがあります

<?php
    // version:
$testarray =    
Array(
        "heading" => Array
        (
            "0" => 'Salads',
            "1" => 'Salads',
            "2" => 'Pasta',
        ),

        "special" => Array
        (
            "0" => '',
            "1" => '',
            "2" => '',
        ),

        "item" => Array
        (
            "0" => 'Small Green',
            "1" => 'Regular Caesar',
            "2" => 'Baked Lasagna',
        ),

        "description" => Array
        (
            "0" => 'Grape tomatoes, onions, green peppers and cucumbers on the bed of crisp lettuce.',
            "1" => 'Classic recipe with romaine lettuce and croutons',
            "2" => 'With meat sauce, tomato vegetarian sauce or Alfredo sauce',
        ),

        "price" => Array
        (
            "0" => 'See Desc',
            "1" => '$5.99',
            "2" => '$9.69',
        ),

        "notes" => Array
        (
            "0" => 'Available in Small ($2.99), Regular ($5.99)',
            "1" => '',
            "2" => '',
        ),

        "submit_val" => 'Submit'
    );

// does not work errors at this - Using $this when not in object context in
/*
function recursion($array0) {
    foreach ($array0 as $key0 => $value0) {
    echo $value0;
    if (is_array($value0))
        $this->recursion($value0);
    }
}
echo "recursion array<br>";
echo recursion($testarray);
*/


echo "testarray";
echo "<pre>";
print_r($testarray);
echo "</pre>";  
echo "<hr>";
$removed_array = removeItem(serialize($testarray), '"Submit"'); 
echo "removed array";
echo "<pre>";
print_r($removed_array);
echo "</pre>";  

// need to test this too for if it works or not need to add complete set ie
// header='pasta', special='',item = 'Spaghetti with Meatballs', descriotion = 'Spaghetti with  4 Meatballs', price='$9.99',notes=''
// need to be able to add above line to array [3] line
    function addItem($serializedArray, $item) 
{
   $a = unserialize($serializedArray);
   $a[] = $item;
   return serialize($a);
}

// trying to remove [submit_val] => Submit
global $serializedArray;
$serializedArray = array();
function removeItem($serializedArray, $remove){
    echo "passed array";
echo "<pre>";
print_r($serializedArray); 
echo "</pre>";  
   $a = unserialize($serializedArray);
 echo "search for remove: ".$remove."<br>";
    foreach($a as $key => $value) {
        echo $key . ' = ' . $value . '<br>';
    // get error here as Warning: Invalid argument supplied for foreach() for next line
    foreach ($value as $key2 => $value2) {
          echo $key2 . ' = ' . $value2 . '<br>';    
          if ($value2 == $remove) {
          echo "at value now ".$value2;     
          echo "search for remove: ".$remove;
      unset($a[$key2]);
      echo "unset: ". $a[$key2];
      }// if
      else {
      //echo "didnt find: ".$remove."<br>";
      }// if

    } //for each inner key2

    } // ofr each outer key
    return serialize($a);
}   // function
?>

編集:再帰のテストに対する回答は素晴らしいですが、配列からアイテムを削除する問題はさらに下にあります。「submit_val」=>「Submit」を削除しようとしてもうまくいきません(これは投稿の質問です)申し訳ありません明確ではありませんでした

以下の提案から誰かが興味を持った場合

works now thank you
/**/
function recursion($array0) {
    foreach ($array0 as $key0 => $value0) {
    echo $value0;
    if (is_array($value0))
      return  recursion($value0);
    }
}
echo "recursion array<br>";
echo '<pre>';
echo recursion($testarray);
echo '</pre>';
4

2 に答える 2

0
function recursion($array0) {
    foreach ($array0 as $key0 => $value0) {
    echo $value0;
    if (is_array($value0))
        recursion($value0);
    }
}

関数から何かを返したくないですか?

于 2013-08-11T16:06:59.273 に答える
0

オブジェクトの外で使用しているため、使用$thisするとエラーがスローされます..の許容$thisされる使用法は次のとおりです。

class Test { 
 function recursion($array0) {
    foreach ($array0 as $key0 => $value0) {
    echo $value0;
    if (is_array($value0))
        $this->recursion($value0);
    }
  }

} 

あなたの機能は次のとおりです。

function recursion($array0) {
    foreach ($array0 as $key0 => $value0) {
    echo $value0;
    if (is_array($value0))
        recursion($value0);
    }
}

を削除$thisすると、エラーが解決するはずです。

于 2013-08-11T16:08:10.153 に答える