Max Size of value in an array PHP

荒凉一梦 提交于 2020-01-16 19:00:30

问题


Is there a limit on a value string in php Associative array?

I have a query that returns value of GROUP_CONCAT as CSV for an array element. When I run the query directly, I see all values being returned. When I print the array in PHP, the string is truncated.

Not sure how get around it? Any ideas?

More info: I just var_dump the results I got from query. Here it is. It shows 1024. Looks like there is a limit. What is it?

  array(5) {
   ["FIELD_ID"]=>
      string(3) "232"
   ["answers"]=>
      string(1024) "48,50,52,54,56,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,"
     ["ANSWER_TYPE"]=>
     string(2) "SS"
   ["FIELD_TYPE"]=>
     string(2) "DA"
   ["main_field_name"]=>
    string(0) ""
  }

More Info: The issue still exists even after setting the variable group_concat_max_len to 5000. Any other ideas? Any issues with PDO?

After restarting MySQL, it works. Thanks!


回答1:


You might need to read up on the length of the max concat here.

Command-Line Format        --group_concat_max_len=#
Option-File Format         group_concat_max_len
Option Sets Variable       Yes, group_concat_max_len
Variable Name              group_concat_max_len
Variable Scope  Global, Session

Dynamic Variable           Yes
  -- Permitted Values
Platform Bit Size          32
Type                       numeric
Default                    1024
Range                      4 .. 4294967295

  -- Permitted Values
Platform Bit Size          64
Type                       numeric
Default                    1024
Range                      4 .. 18446744073709547520

Edit: I find it rather amusing that the string that is returned to you is 1024 in length - which just happens to be the default max length in mysql. Coincedence?




回答2:


When you're using GROUP_CONCAT in mysql with the default length limit of 1024, anything above that in your results will get cut off. This happened to me as well.

To determine if this is the issue, try this:

// echo string length to determine what your variable value length is
echo strlen($variable_here);

Then check what the concat limit is set to in mysql by executing this query:

SHOW VARIABLES LIKE 'group_concat_max_len'

I ran it in phpMyAdmin. If you get the same value from strlen and the SHOW VARIABLES query, you'll need to update your my.conf file or ask your host to do it. In WHM/cPanel, it is located in /etc/my.conf and in that file you'll need to have something like this:

[mysqld]  #<-- Under that
group_concat_max_len=5120  #<-- add this

I chose 5x1024 to make it 5120 just to not have to deal with it again. Once you've saved the conf file back to the server, you'll need to restart the mysql service. If you're using WHM, you can do that under Home » Restart Services » SQL Server (MySQL)

Once I did the above, the strlen did in fact echo out 3519 and the value was no longer cut off.




回答3:


Your question is somewhat tricky to answer becuase: 1. you give very little information on the actual size of your string. 2. You're asking several questions (array size and string size).

You should check out this question and then supply us with extra information like which version of php you're using and also as @FLuffeh says in his comment please show us some code.



来源:https://stackoverflow.com/questions/11926269/max-size-of-value-in-an-array-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!