为什么array_flip不能在我的PHP脚本中工作?

时间:2017-07-22 13:57:25

标签: php arrays

我正在尝试反转此字符串的键和值,但似乎无法正常工作。可能是什么问题?

$input = '"85"=>"1","86"=>"2","87"=>"3","88"=>"4","89"=>"5","90"=>"6","91"=>"7","92"=>"8","93"=>"9","94"=>"10","95"=>"11","96"=>"12","97"=>"13","98"=>"14","99"=>"15","100"=>"16","101"=>"17","102"=>"18","103"=>"19","104"=>"20","105"=>"21","106"=>"22","107"=>"23","108"=>"24","109"=>"25","110"=>"26","111"=>"27","112"=>"28","113"=>"29","114"=>"30","115"=>"31","116"=>"32","117"=>"33","118"=>"34","119"=>"35","120"=>"36","121"=>"37","122"=>"38","123"=>"39","124"=>"40","125"=>"41","126"=>"42","127"=>"43","128"=>"44","129"=>"45","130"=>"46","131"=>"47","132"=>"48","133"=>"49","134"=>"50","135"=>"51","136"=>"52","137"=>"53","138"=>"54","139"=>"55","140"=>"56","141"=>"57","142"=>"58","143"=>"59","144"=>"60","145"=>"61","146"=>"62","147"=>"63","148"=>"64","149"=>"65","150"=>"66","151"=>"67","152"=>"68","153"=>"69","154"=>"70","155"=>"71","156"=>"72","157"=>"73","158"=>"74","159"=>"75","160"=>"76","161"=>"77","162"=>"78","163"=>"79","164"=>"80","165"=>"81","166"=>"82","167"=>"83","168"=>"84","169"=>"85","170"=>"86","171"=>"87","172"=>"88","173"=>"89","174"=>"90","175"=>"91","176"=>"92","177"=>"93","178"=>"94","179"=>"95","180"=>"96","181"=>"97","182"=>"98","183"=>"99","184"=>"100","185"=>"101","186"=>"102","187"=>"103","188"=>"104","189"=>"105","190"=>"106","191"=>"107","192"=>"108","193"=>"109","194"=>"110","195"=>"111","196"=>"112","197"=>"113","198"=>"114","199"=>"115","200"=>"116","201"=>"117","202"=>"118","203"=>"119","204"=>"120","205"=>"121","206"=>"122","207"=>"123","208"=>"124","209"=>"125","210"=>"126"';
$result = array($input);
$result=array_flip($result);
print_r($result);

3 个答案:

答案 0 :(得分:0)

array($input)不会返回您的想法。 array不会解析您的字符串。所以你必须先做到这一点。如果您的输入字符串在除了键和值之外的任何地方都没有使用=>,那么您可以进行替换以使其成为JSON,然后对其进行解码:

$result = json_decode("{" . str_replace("=>", ":", $input) . "}", true);
$result = array_flip($result);
print_r($result);

答案 1 :(得分:0)

您可能没有意识到,但您的$result数组只有一个元素,这是一个'"85"=>"1","86"=>"2", ...形式的巨型字符串。你必须像这样创建$result数组,

$result = array("85"=>"1","86"=>"2","87"=>"3", ... );

答案 2 :(得分:0)

首先需要先将输入处理为数组,因为array_flip()不能对字符串起作用,您可以先使用,分隔符将输入拆分为几个子部分,然后第二次使用=>分隔符处理它,这足以告诉你正确地做错了正确的事情