2017-06-29 142 views
2

这是我的数组,即$数据。如何在数组中获取逗号分隔符(,)的值?

function generateQuestion($userdata) { 
$module_name = $userdata->module_name; 
$module = new Module(); 
$module->data['*'] = ''; 
$module->where = " module_name = '" . $module_name . "' and is_delete='0'"; 
$module->action = "get"; 
$module_res = $module->process(); 
$data = array(); 
if($module_res['count'] > 0) { 
    foreach ($module_res['res'] as $module_key => $module_value) { 
     $cat = new Category(); 
     $cat->data['*'] = ''; 
     $cat->where = "que_module_id='".$module_value['module_id']."' and is_delete='0'"; 
     $cat->action = "get"; 
     $cat_res = $cat->process(); 

     foreach ($cat_res['res'] as $cat_key => $cat_value) { 
      $question = new Question(); 
      $question->data['*'] = ''; 
      $question->where = "question_cat_id='".$cat_value['que_cat_id']."' and is_delete='0'"; 
      $question->action = "get"; 
      $question_res = $question->process(); 
      foreach ($question_res['res'] as $question_key => $question_value) { 
       $que_ans = ''; 
       if($question_value['question_ans'] == 1) { 
        $que_ans = 'Yes'; 
       } elseif($question_value['question_ans'] == 2) { 
        $que_ans = 'No'; 
       } else { 
        $que_ans = 'N/A'; 
       } 
       $options = explode(',',$question_value['question_options']); 

       $data[$module_value['module_name']][$cat_value['que_cat_id']][$question_value['question_id']] = array(
        'question_name' => $question_value['question_name'], 
        'question_ans' => $que_ans, 
        'question_ans_comments' => $question_value['question_ans_comments'] == ''?'None':$question_value['question_ans_comments'], 
        'question_options' => explode(',',$question_value['question_options']) 
       ); 
      } 
     } 
    } 
    print_r($data);die; 
    //echo json_encode(array("data"=>$data,"status" => "success", 'message' => 'Question Listing')); 
} else { 
    echo json_encode(array("status" => "error", 'message' => 'Module Not Found')); 
} 
} 
    $data[$module_value['module_name']][$cat_value['que_cat_id']] 
[$question_value['question_id']] = array(
        'question_name' => $question_value['question_name'], 
        'question_ans' => $que_ans, 
        'question_ans_comments' => $question_value['question_ans_comments'] == ''?'None':$question_value['question_ans_comments'], 
        'question_options' => explode(',',$question_value['question_options']) 
       ); 

输出上述阵列的:

Array 
(
[Prestart Hand Tools/Electric Power Tool Safety Checks] => Array 
    (
     [3] => Array 
      (
       [1] => Array 
        (
         [question_name] => machine runs correctly no 
          abnormal noise 
         [question_ans] => No 
         [question_ans_comments] => None 
         [question_options] => Array 
          (
           [0] => 1 
           [1] => 2 
           [2] => 3 
           [3] => 4 
          ) 

        ) 

       [4] => Array 
        (
         [question_name] => abc 
         [question_ans] => Yes 
         [question_ans_comments] => None 
         [question_options] => Array 
          (
           [0] => 1 
          ) 

        ) 

      ) 

     [5] => Array 
      (
       [2] => Array 
        (
         [question_name] => machine runs correctly no abnormal noise 
         [question_ans] => No 
         [question_ans_comments] => None 
         [question_options] => Array 
          (
           [0] => 1 
           [1] => 2 
           [2] => 3 
           [3] => 4 
          ) 

        ) 

      ) 

     [6] => Array 
      (
       [3] => Array 
        (
         [question_name] => machine runs correctly no abnormal noise 
         [question_ans] => No 
         [question_ans_comments] => None 
         [question_options] => Array 
          (
           [0] => 1 
           [1] => 2 
           [2] => 3 
           [3] => 4 
          ) 

        ) 

      ) 

    ) 

我的数据库字段存储question_options像1,2,3,4-

enter image description here

我要像

Array 
(
[Prestart Hand Tools/Electric Power Tool Safety Checks] => Array 
    (
     [3] => Array 
      (
       [1] => Array 
        (
         [question_name] => machine runs correctly no 
          abnormal noise 
         [question_ans] => No 
         [question_ans_comments] => None 
         [question_options] => Array 
          (
           [1] => 'Yes' 
           [2] => 'No' 
           [3] => 'N/a' 
           [4] => 'comments' 
          ) 

        ) 

       [4] => Array 
        (
         [question_name] => abc 
         [question_ans] => Yes 
         [question_ans_comments] => None 
         [question_options] => Array 
          (
           [1] => 'Yes' 
          ) 

        ) 

      ) 

     [5] => Array 
      (
       [2] => Array 
        (
         [question_name] => machine runs correctly no 
          abnormal noise 
         [question_ans] => No 
         [question_ans_comments] => None 
         [question_options] => Array 
          (
           [1] => 'Yes' 
           [2] => 'No' 
           [3] => 'N/a' 
           [4] => 'comments' 
          ) 

        ) 

      ) 

     [6] => Array 
      (
       [3] => Array 
        (
         [question_name] => machine runs correctly no 
          abnormal noise 
         [question_ans] => No 
         [question_ans_comments] => None 
         [question_options] => Array 
          (
           [1] => 'Yes' 
           [2] => 'No' 
           [3] => 'N/a' 
           [4] => 'comments' 
          ) 

        ) 

      ) 

    ) 

阵列请帮我解决了这个问题。

+0

你尝试过什么吗? –

+0

分享将值添加到数组的代码,这样我们可以指导您应该更改什么 – EarthDragon

+0

您可以在SQL中使用“替换”,然后这些值将按您的要求设置。粗略地替换(替换(replace(replace(question_options,'1','yes'),'2','no'),'3','n/a'),'4','comments')' 。尽管如此,您最好不要将CSV存储在数据库中。 – chris85

回答

3

试试这个。

$options = array(1,2,4); // array of explode(',',$question_value['question_options']) 

    function getOptions($options){ 
     $temparray = array(); 
     $option_fix_array = array(
        1 => 'Yes', 
        2 => 'NO', 
        3 => 'N/A', 
        4 => 'Comments', 
       ); 
     foreach($options as $value){ 
      if(array_key_exists($value,$option_fix_array)){ 
       $temparray[$value] = $option_fix_array[$value]; 
      } 
     } 
     return $temparray; 
    } 

    print_r(getOptions($options)); 

我想这会帮助你。

+0

@R P,谢谢你的解决方案对我有帮助... – Angel

+0

欢迎来到@Angel。 –

1

声明数组如下:

$meaningArray = array(
    1 => 'Yes', 
    2 => 'No', 
    3 => 'N/A', 
    4 => 'Comment' 
); 

及用途:

'question_options' => explode(',',$meaningArray[$question_value['question_options']]); 

相反的:

'question_options' => explode(',',$question_value['question_options']) 
+2

这个问题太模糊了,你只是为了花时间而得到upvote – Purefan

+0

@LuFFy,你的解决方案不起作用 – Angel

+0

@Angel,你能告诉我它是否会给出任何错误?我更新了可以检查的'$ meaningArray'值。 – LuFFy