【问题标题】:echo specific value from mysql array从 mysql 数组回显特定值
【发布时间】:2016-09-01 07:37:06
【问题描述】:

所以我正在尝试使用 php (wordpress) 从 mysql 表中回显值

大部分地区都很好

但是当我尝试回显时

$row->form 我得到一个像这样返回的数组:

string(832) "[{"id":"1","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"First name","value":"firstname1"},{"id":"2","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Last name","value":"lastname1"},{"id":"6","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Accomodation","value":"Hotel Sample"},{"id":"3","is_email":"true","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Email","value":"sample@example.com"},{"id":"4","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Phone","value":"333333"},{"id":"5","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Message","value":"Goog Job"}]" 

string(973) "[{"id":"1","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"First name","value":"ddd"},{"id":"2","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Last name","value":"ddd"},{"id":"3","is_email":"true","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Email","value":"sample1@example.com"},{"id":"6","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Accomodation\/PikUp Address:","value":"House no 203"},{"id":"8","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Room Number:","value":"d"},{"id":"4","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Phone","value":"44444"},{"id":"5","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Message","value":"444444"}]" 

这是我的 sql 代码:

$result = $wpdb->get_results( "SELECT * FROM wp_table_1");

foreach($result as $row)
 {
echo $row->form;
}

我希望呼应名字。谢谢

【问题讨论】:

  • 您错过了查询“SELECT * FROM wp_table_1 应该是”SELECT * FROM wp_table_1" ...错过了最后一个引号
  • 感谢您的指出,但我在写这里时错过了这一点。
  • 在这种情况下尝试$row->form[0]->value。由于您呈现的是 JSON 字符串而不是数组,因此您可能需要 json_decode 之前。
  • 感谢 Quasimodo,它在一定程度上帮助了我。现在我面临一个小问题,我正在尝试访问每个数组的名字,并且在每种情况下,名字数组的索引值都是不同的。你有什么建议

标签: php mysql arrays


【解决方案1】:

如果您找不到合适的解决方案,这只是一种解决方法。您应该改用get_var()get_col() 之类的方法。请咨询wordpress reference

<?php             
$rows = [ 
'
[ {"id":"1","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"First name","value":"firstname1"},
  {"id":"2","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Last name","value":"lastname1"},
  {"id":"6","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Accomodation","value":"Hotel Sample"},
  {"id":"3","is_email":"true","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Email","value":"sample@example.com"},
  {"id":"4","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Phone","value":"333333"},
  {"id":"5","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Message","value":"Goog Job"}
] 
',

'
[ {"id":"1","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"First name","value":"ddd"},
  {"id":"2","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Last name","value":"ddd"},
  {"id":"3","is_email":"true","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Email","value":"sample1@example.com"},
  {"id":"6","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Accomodation\/PikUp Address:","value":"House no 203"},
  {"id":"8","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Room Number:","value":"d"},
  {"id":"4","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Phone","value":"44444"},
  {"id":"5","is_email":"false","add_to_day_hour_info":"false","add_to_day_hour_body":"false","translation":"Message","value":"444444"}
] 
'];

var_dump($rows);

$names = [ 1 => 'firstname', 2 => 'lastname' ];
foreach($rows as &$row)
{
  $row = json_decode($row);
  $cols = [];
  foreach($row as &$col)
  { 
    if(isset($names[$col->id]))
      $cols[$names[$col->id]] = $col;
  }
  $row = $cols;
}

var_dump($rows);

结果是:

array (size=2)
  0 => 
    array (size=2)
      'firstname' => 
        object(stdClass)[1]
          public 'id' => string '1' (length=1)
          public 'is_email' => string 'false' (length=5)
          public 'add_to_day_hour_info' => string 'false' (length=5)
          public 'add_to_day_hour_body' => string 'false' (length=5)
          public 'translation' => string 'First name' (length=10)
          public 'value' => string 'firstname1' (length=10)
      'lastname' => 
        object(stdClass)[2]
          public 'id' => string '2' (length=1)
          public 'is_email' => string 'false' (length=5)
          public 'add_to_day_hour_info' => string 'false' (length=5)
          public 'add_to_day_hour_body' => string 'false' (length=5)
          public 'translation' => string 'Last name' (length=9)
          public 'value' => string 'lastname1' (length=9)
  1 => 
    array (size=2)
      'firstname' => 
        object(stdClass)[5]
          public 'id' => string '1' (length=1)
          public 'is_email' => string 'false' (length=5)
          public 'add_to_day_hour_info' => string 'false' (length=5)
          public 'add_to_day_hour_body' => string 'false' (length=5)
          public 'translation' => string 'First name' (length=10)
          public 'value' => string 'ddd' (length=3)
      'lastname' => 
        object(stdClass)[4]
          public 'id' => string '2' (length=1)
          public 'is_email' => string 'false' (length=5)
          public 'add_to_day_hour_info' => string 'false' (length=5)
          public 'add_to_day_hour_body' => string 'false' (length=5)
          public 'translation' => string 'Last name' (length=9)
          public 'value' => string 'ddd' (length=3)

【讨论】:

    【解决方案2】:
    echo $row->form;
    

    以上行将回显数组。

    按照以下模式仅回显名字使用

    echo $row->form['first_name'];
    

    【讨论】:

    • 您好,感谢您的建议,但是没有名字这样的列,您可以看到像这样存储的值“值”:“firstname1”
    • 同样你可以看到每个字段有多个数组,第一个数组包含名字作为值
    猜你喜欢
    • 2015-01-16
    • 2014-02-03
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多