1

我是 PHP 新手,在下面的代码中 $strng 值是为数组动态创建的。

$strng='"Active Life" => "6","Arts & Entertainment" => "4","Beauty & Spa" => "3","Food & Drink" => "1","Hotels" => "10","Local Services" => "8","Nightlife" => "2","Pets" => "9","Public Services" => "7","Shopping" => "5"';
$bussCatry=array($strng);

foreach($bussCatry as $x=>$x_value)
{
    error_log( "Key=" . $x . ", Value=" . $x_value);      
}

但是当我尝试创建数组时,我失败了,我的输出低于预期。只有一个键值对

Key=0, 
Value="Active Life" =>"6",
"Arts & Entertainment" =>"4",
"Beauty & Spa" =>"3",
"Food & Drink" =>"1",
"Hotels" =>"10",
"Local Services" =>"8",
"Nightlife" =>"2",
"Pets" =>"9",
"Public Services" =>"7",
"Shopping" =>"5"
4

6 回答 6

0

查看 php 的数组语法。

尝试这个:

$bussCatry = array(
  'Active Life' => '6',
  'Arts & Entertainment' => '4',
  'Beauty & Spa' => '3',
  'Food & Drink' => '1',
  'Hotels' => '10',
  'Local Services' => '8',
  'Nightlife' => '2',
  'Pets' => '9',
  'Public Services' => '7',
  'Shopping' => '5',
);
于 2013-04-06T07:38:20.307 回答
0

嗯,如果真的有必要,你可以试试这个:

eval("\$bussCatry = array({$strng});");
于 2013-04-06T07:39:58.817 回答
0

创建一个数组直接赋值。

$bussCatry = array(
        "Active Life" => "6",
        "Arts & Entertainment" => "4",
        "Beauty & Spa" => "3",
        "Food & Drink" => "1",
        "Hotels" => "10",
        "Local Services" => "8",
        "Nightlife" => "2",
        "Pets" => "9",
        "Public Services" => "7",
        "Shopping" => "5"
);

不要array values使用single quotes. 它不像array.

于 2013-04-06T07:41:02.180 回答
0

array() 函数不解析字符串。

array("a" => "orange", "b" => "banana", "c" => "apple")

正如您在示例中看到的那样,不仅有一个简单的字符串,还有参数。

于 2013-04-06T07:41:48.240 回答
0

试试这个代码,你发布了错误的代码。

$strng=array("Active Life" => "6","Arts & Entertainment" => "4","Beauty & Spa" => "3","Food & Drink" => "1","Hotels" => "10","Local Services" => "8","Nightlife" => "2","Pets" => "9","Public Services" => "7","Shopping" => "5");
 //$bussCatry=array($strng);

foreach($strng as $x=>$x_value)
   {
   echo( "Key=" . $x . ", Value=" . $x_value);

  }

请让我知道这对你有没有用 :)

谢谢。

于 2013-04-06T07:43:12.233 回答
0

看一下token_get_all,您可以将字符串解析为令牌,然后根据需要构建您的数组。对不起,它有点乱,但它是一个体面的工作启动器。

<?php
define('STATE_WAITING_FOR_ARRAY',   1);
define('STATE_WAITING_FOR_KEY',     2);
define('STATE_WAITING_FOR_VALUE',   3);

$string = '"Active Life" => "6","Arts & Entertainment" => "4","Beauty & Spa" => "3","Food & Drink" => "1","Hotels" => "10","Local Services" => "8","Nightlife" => "2","Pets" => "9","Public Services" => "7","Shopping" => "5"';
$string = sprintf('<?php array(%s); ?>', $string);
$tokens = token_get_all($string);

$state = STATE_WAITING_FOR_ARRAY;

$array = array();

foreach($tokens as $token) {

    if( ! is_array($token)) {
        continue;
    }

    $name   = token_name($token[0]);
    $value  = $token[1];

    if(STATE_WAITING_FOR_ARRAY === $state && 'T_ARRAY' === $name) {
        $state = STATE_WAITING_FOR_KEY;
        continue;
    }

    if(STATE_WAITING_FOR_KEY === $state && 'T_CONSTANT_ENCAPSED_STRING' === $name) {
        $state  = STATE_WAITING_FOR_VALUE;
        $key    = $value;
        continue;
    }

    if(STATE_WAITING_FOR_VALUE === $state && 'T_CONSTANT_ENCAPSED_STRING' === $name) {
        $state          = STATE_WAITING_FOR_KEY;
        $array[$key]    = $value;
        $key            = null;
        continue;
    }
}


var_dump($array);

/*
    array(10) {
      [""Active Life""]=>
      string(3) ""6""
      [""Arts & Entertainment""]=>
      string(3) ""4""
      [""Beauty & Spa""]=>
      string(3) ""3""
      [""Food & Drink""]=>
      string(3) ""1""
      [""Hotels""]=>
      string(4) ""10""
      [""Local Services""]=>
      string(3) ""8""
      [""Nightlife""]=>
      string(3) ""2""
      [""Pets""]=>
      string(3) ""9""
      [""Public Services""]=>
      string(3) ""7""
      [""Shopping""]=>
      string(3) ""5""
    }
*/
于 2013-04-06T08:39:43.550 回答