2014-02-19 4 views
1

Первый массив Выход:Объединение двух массивов и флажком в PHP

print_r($categories); 
Array 
(
    [1] => Accounting & Financial 
    [2] => Advertising Services 
    [3] => Awards & Incentives 
    [4] => Business Consultants 
    [5] => Career Services 
    [6] => Creative Services 
    [7] => Data Management 
    [8] => Distributors & Agents 
) 

Второй выход массива:

print_r($Service_Provider_Id['Category']); 
Array 
(
    [0] => Array 
     (
      [id] => 1 
      [category] => Accounting & Financial 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [category] => Advertising Services 
     ) 

) 

Мой Ниже код, показывающий все флажок базы на первом массиве

<?phpforeach ($categories as $key => $value) { ?> 
         <div class="checkboxes-div"> 
          <input type="checkbox" id="CategoryCategory<?php echo $key; ?>" value="<?php echo $key?>" name="data[Category][Category][]"> 
          <label class="selected" for="CategoryCategory<?php echo $key; ?>"> 
          <?php echo $value; ?> 
          </label> 
         </div> 
<?php } ?> 

если значение ключа второй категории массива соответствует первому значению массива, поэтому я хочу выбрать флажок

ответ

1

с in_array() не будет работать в многомерном массиве, вам нужно использовать два цикла . поэтому попробуйте это

<?php 
$categories=Array 
(
    "1" => "Accounting & Financial", 
    "2" => "Advertising Services", 
    "3" => "Awards & Incentives", 
    "4" => "Business Consultants", 
    "5" => "Career Services", 
    "6" => "Creative Services", 
    "7" => "Data Management", 
    "8" => "Distributors & Agents" 
) ; 

$Service_Provider_Id['Category'] = Array 
(
    "0" => Array 
     (
      "id" => "1" , 
      "category" => "Accounting & Financial" 
     ), 

    "1" => Array 
     (
      "id" => "2", 
      "category" => "Advertising Services" 
     ) 

); 

?> 



<?php foreach ($categories as $key => $value) { ?> 

         <div class="checkboxes-div"> 
          <input type="checkbox" id="CategoryCategory<?php echo $key; ?>" value="<?php echo $key?>" name="data[Category][Category][]" 
<?php foreach ($Service_Provider_Id['Category'] as $keys => $values) { foreach ($values as $keys2 => $values2) { if(in_array($value,$Service_Provider_Id['Category'][$keys])) { ?> checked <?php } } } ?> > 
          <label class="selected" for="CategoryCategory<?php echo $value; ?>"> 
          <?php echo $value; ?> 
          </label> 
         </div> 
<?php } ?> 
+0

Opppps ........ не работает –

+0

был ли он отображающим ошибку или не проверял текстовое поле? – krishna

+0

Не показывать ошибку, но не отмечен checkbox –

0

вещь, которую вы хотите найти в многомерном массиве, поэтому вы должны использовать функцию для этого. Попробуйте этот код

function ArraySearchRecursive($Needle, $Haystack, $NeedleKey = "", $Strict = false, $Path = array()) { 
    if (!is_array($Haystack)) 
     return false; 
    foreach ($Haystack as $Key => $Val) { 
     if (is_array($Val) && 
       $SubPath = ArraySearchRecursive($Needle, $Val, $NeedleKey, $Strict, $Path)) { 
      $Path = array_merge($Path, Array($Key), $SubPath); 
      return $Path; 
     } elseif ((!$Strict && $Val == $Needle && 
       $Key == (strlen($NeedleKey) > 0 ? $NeedleKey : $Key)) || 
       ($Strict && $Val === $Needle && 
       $Key == (strlen($NeedleKey) > 0 ? $NeedleKey : $Key))) { 
      $Path[] = $Key; 
      return $Path; 
     } 
    } 
    return false; 
} 

, а затем

<?php foreach ($categories as $key => $value) { ?> 
    <div class="checkboxes-div"> 
     <input type="checkbox" id="CategoryCategory<?php echo $key; ?>" value="<?php echo $key; ?>" <?php if (ArraySearchRecursive($value, $Service_Provider_Id['Category'])) { ?> checked <?php } ?> name="data[Category][Category][]"> 
     <label class="selected" for="CategoryCategory<?php echo $key; ?>"> 
      <?php echo $value; ?> 
     </label> 
    </div> 
<?php } ?> 

Это работает. Я лично попробовал.

+0

, вы просто используете второй массив в цикле wht около первого массива? –

+0

отредактирован, попробуйте этот путь. Элемент, который вы хотите найти в многомерном массиве, поэтому вы не можете сделать это с помощью простого foreach – ponciste

+0

Я использовал тот же код, но не работал –

Смежные вопросы