Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.php > #6101 > unrolled thread
| Started by | bill <nobody@spamcop.net> |
|---|---|
| First post | 2012-05-21 10:22 -0400 |
| Last post | 2012-05-21 15:19 -0400 |
| Articles | 9 — 4 participants |
Back to article view | Back to comp.lang.php
array filtering question bill <nobody@spamcop.net> - 2012-05-21 10:22 -0400
Re: array filtering question Jerry Stuckle <jstucklex@attglobal.net> - 2012-05-21 10:46 -0400
Re: array filtering question bill <nobody@spamcop.net> - 2012-05-21 11:18 -0400
Re: array filtering question Jerry Stuckle <jstucklex@attglobal.net> - 2012-05-21 12:42 -0400
Re: array filtering question bill <nobody@spamcop.net> - 2012-05-21 15:13 -0400
Re: array filtering question Shake <QUITAESTO@QUITAESTO.NOES> - 2012-05-21 17:01 +0200
Re: array filtering question bill <nobody@spamcop.net> - 2012-05-21 11:20 -0400
Re: array filtering question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-05-21 19:26 +0200
Re: array filtering question bill <nobody@spamcop.net> - 2012-05-21 15:19 -0400
| From | bill <nobody@spamcop.net> |
|---|---|
| Date | 2012-05-21 10:22 -0400 |
| Subject | array filtering question |
| Message-ID | <GuWdnQ9JU-sg0ifSnZ2dnUVZ_omdnZ2d@cablespeedmi.com> |
I have a POST array with about 200 elements. There MAY be one or more key elements that start with deleteF~ (for example deleteF~EAP, deleteF~Lowfee) What I want to know is if any array element begins with deleteF~ I looked at array_keys, array_filter and others, but they seem to all match the whole key string. I can process the whole array myself, but I am hoping that with all the array functions there might be one. It would be nice if I could apply an array function and get back an array with just those keys. (they are checkboxes so the value is always "on", just their presence is enough information.) bill
[toc] | [next] | [standalone]
| From | Jerry Stuckle <jstucklex@attglobal.net> |
|---|---|
| Date | 2012-05-21 10:46 -0400 |
| Message-ID | <jpdkh1$a9b$1@dont-email.me> |
| In reply to | #6101 |
On 5/21/2012 10:22 AM, bill wrote: > I have a POST array with about 200 elements. > There MAY be one or more key elements that start with deleteF~ > (for example deleteF~EAP, deleteF~Lowfee) > > What I want to know is if any array element begins with deleteF~ > > I looked at array_keys, array_filter and others, but they seem to all > match the whole key string. > > I can process the whole array myself, but I am hoping that with all the > array functions there might be one. > > It would be nice if I could apply an array function and get back an > array with just those keys. (they are checkboxes so the value is always > "on", just their presence is enough information.) > > bill There isn't a real easy way to do this other than going through the whole array. However, I think your design could be improved. Why have multiple checkboxes with different names and the same value? Why not have all the checkboxes with the same name and different values? It would make processing much easier. -- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstucklex@attglobal.net ==================
[toc] | [prev] | [next] | [standalone]
| From | bill <nobody@spamcop.net> |
|---|---|
| Date | 2012-05-21 11:18 -0400 |
| Message-ID | <R_2dnT7fEJ8wwSfSnZ2dnUVZ_qidnZ2d@cablespeedmi.com> |
| In reply to | #6103 |
On 5/21/2012 10:46 AM, Jerry Stuckle wrote: > On 5/21/2012 10:22 AM, bill wrote: >> I have a POST array with about 200 elements. >> There MAY be one or more key elements that start with deleteF~ >> (for example deleteF~EAP, deleteF~Lowfee) >> >> What I want to know is if any array element begins with deleteF~ >> >> I looked at array_keys, array_filter and others, but they seem >> to all >> match the whole key string. >> >> I can process the whole array myself, but I am hoping that with >> all the >> array functions there might be one. >> >> It would be nice if I could apply an array function and get >> back an >> array with just those keys. (they are checkboxes so the value >> is always >> "on", just their presence is enough information.) >> >> bill > > There isn't a real easy way to do this other than going through > the whole array. > > However, I think your design could be improved. Why have multiple > checkboxes with different names and the same value? Why not have > all the checkboxes with the same name and different values? > > It would make processing much easier. > Thanks Jerry, There are major deletes (the ones I mentioned) and minor deletes AND about another 200 fields with values. This is how it appeared in the feeble thing I use for a brain. It only took me 4 lines to create the array with the keys I need in it. The key encodes the item to delete: apply substr to it and I have the items to delete and the class of item they represent (which leads to the file name...) I suppose I could do it the way you suggested, but then I'd need to get my mind wrapped around that design and this part of the project is 90% complete (which of course means it is 90% incomplete). Thanks for the reasurance. bill
[toc] | [prev] | [next] | [standalone]
| From | Jerry Stuckle <jstucklex@attglobal.net> |
|---|---|
| Date | 2012-05-21 12:42 -0400 |
| Message-ID | <jpdraj$ofl$1@dont-email.me> |
| In reply to | #6105 |
On 5/21/2012 11:18 AM, bill wrote: > On 5/21/2012 10:46 AM, Jerry Stuckle wrote: >> On 5/21/2012 10:22 AM, bill wrote: >>> I have a POST array with about 200 elements. >>> There MAY be one or more key elements that start with deleteF~ >>> (for example deleteF~EAP, deleteF~Lowfee) >>> >>> What I want to know is if any array element begins with deleteF~ >>> >>> I looked at array_keys, array_filter and others, but they seem >>> to all >>> match the whole key string. >>> >>> I can process the whole array myself, but I am hoping that with >>> all the >>> array functions there might be one. >>> >>> It would be nice if I could apply an array function and get >>> back an >>> array with just those keys. (they are checkboxes so the value >>> is always >>> "on", just their presence is enough information.) >>> >>> bill >> >> There isn't a real easy way to do this other than going through >> the whole array. >> >> However, I think your design could be improved. Why have multiple >> checkboxes with different names and the same value? Why not have >> all the checkboxes with the same name and different values? >> >> It would make processing much easier. >> > > Thanks Jerry, > > There are major deletes (the ones I mentioned) and minor deletes AND > about another 200 fields with values. This is how it appeared in the > feeble thing I use for a brain. > > It only took me 4 lines to create the array with the keys I need in it. > The key encodes the item to delete: apply substr to it and I have the > items to delete and the class of item they represent (which leads to the > file name...) > > I suppose I could do it the way you suggested, but then I'd need to get > my mind wrapped around that design and this part of the project is 90% > complete (which of course means it is 90% incomplete). > > Thanks for the reasurance. > > bill > Actually, it shouldn't take any more to create the items with one key and different ids. For instance, instead of creating something like: <input type="checkbox" name="deleteField1" value="on"> You create <input type="checkbox" name="delete[]" value="Field1"> You can call your major and minor delete checkboxes different names. In this case, all the checkboxes with the name "delete[]" will be in $_POST['delete'] array, i.e. $_POST['delete'][0] might equal 'Field1', $_POST['delete'][1] might equal 'Field3' (Field 2 NOT being checked) and so on. I find related checkboxes (i.e. similar processing for all) to be much easier to handle this way. -- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstucklex@attglobal.net ==================
[toc] | [prev] | [next] | [standalone]
| From | bill <nobody@spamcop.net> |
|---|---|
| Date | 2012-05-21 15:13 -0400 |
| Message-ID | <v8OdnframYdXDifSnZ2dnUVZ_uGdnZ2d@cablespeedmi.com> |
| In reply to | #6107 |
On 5/21/2012 12:42 PM, Jerry Stuckle wrote: > On 5/21/2012 11:18 AM, bill wrote: >> On 5/21/2012 10:46 AM, Jerry Stuckle wrote: >>> On 5/21/2012 10:22 AM, bill wrote: >>>> I have a POST array with about 200 elements. >>>> There MAY be one or more key elements that start with deleteF~ >>>> (for example deleteF~EAP, deleteF~Lowfee) >>>> >>>> What I want to know is if any array element begins with deleteF~ >>>> >>>> I looked at array_keys, array_filter and others, but they seem >>>> to all >>>> match the whole key string. >>>> >>>> I can process the whole array myself, but I am hoping that with >>>> all the >>>> array functions there might be one. >>>> >>>> It would be nice if I could apply an array function and get >>>> back an >>>> array with just those keys. (they are checkboxes so the value >>>> is always >>>> "on", just their presence is enough information.) >>>> >>>> bill >>> >>> There isn't a real easy way to do this other than going through >>> the whole array. >>> >>> However, I think your design could be improved. Why have multiple >>> checkboxes with different names and the same value? Why not have >>> all the checkboxes with the same name and different values? >>> >>> It would make processing much easier. >>> >> >> Thanks Jerry, >> >> There are major deletes (the ones I mentioned) and minor >> deletes AND >> about another 200 fields with values. This is how it appeared >> in the >> feeble thing I use for a brain. >> >> It only took me 4 lines to create the array with the keys I >> need in it. >> The key encodes the item to delete: apply substr to it and I >> have the >> items to delete and the class of item they represent (which >> leads to the >> file name...) >> >> I suppose I could do it the way you suggested, but then I'd >> need to get >> my mind wrapped around that design and this part of the project >> is 90% >> complete (which of course means it is 90% incomplete). >> >> Thanks for the reasurance. >> >> bill >> > > Actually, it shouldn't take any more to create the items with one > key and different ids. For instance, instead of creating > something like: > > <input type="checkbox" name="deleteField1" value="on"> > > You create > > <input type="checkbox" name="delete[]" value="Field1"> > > You can call your major and minor delete checkboxes different names. > > In this case, all the checkboxes with the name "delete[]" will be > in $_POST['delete'] array, i.e. > > $_POST['delete'][0] might equal 'Field1', > $_POST['delete'][1] might equal 'Field3' (Field 2 NOT being checked) > and so on. > > I find related checkboxes (i.e. similar processing for all) to be > much easier to handle this way. > Yes, that would have been. I didn't think about an array of checkboxes. If it doesn't fall out of my brain I will do it that way next time. Many thanks. bill
[toc] | [prev] | [next] | [standalone]
| From | Shake <QUITAESTO@QUITAESTO.NOES> |
|---|---|
| Date | 2012-05-21 17:01 +0200 |
| Message-ID | <jpdld1$g5p$1@dont-email.me> |
| In reply to | #6101 |
El 21/05/2012 16:22, bill escribió:
> I have a POST array with about 200 elements.
> There MAY be one or more key elements that start with deleteF~
> (for example deleteF~EAP, deleteF~Lowfee)
>
> What I want to know is if any array element begins with deleteF~
Perhaps you can use multidimensional array here.
If you have something like:
<input type="checkbox" name="item_1" value="x" />
<input type="checkbox" name="[deleteF~][item_2]" value="x" />
<input type="checkbox" name="item_3" value="x" />
<input type="checkbox" name="[deleteF~][item_4]" value="x" />
Perhaps if better to change to:
Then the POST will be:
$_POST['item_1] = 'X';
$_POST['item_3] = 'X';
$_POST['deleteF~']['item_2] = 'X';
$_POST['deleteF~']['item_4] = 'X';
And you can do:
if(isset($_POST['deleteF~'])) foreach($_POST['deleteF~'] as $Item) {
// Do things with this item.
}
greetings
[toc] | [prev] | [next] | [standalone]
| From | bill <nobody@spamcop.net> |
|---|---|
| Date | 2012-05-21 11:20 -0400 |
| Message-ID | <R_2dnTnfEJ-zwCfSnZ2dnUVZ_qidnZ2d@cablespeedmi.com> |
| In reply to | #6104 |
On 5/21/2012 11:01 AM, Shake wrote:
> El 21/05/2012 16:22, bill escribió:
>> I have a POST array with about 200 elements.
>> There MAY be one or more key elements that start with deleteF~
>> (for example deleteF~EAP, deleteF~Lowfee)
>>
>> What I want to know is if any array element begins with deleteF~
>
> Perhaps you can use multidimensional array here.
>
> If you have something like:
>
> <input type="checkbox" name="item_1" value="x" />
> <input type="checkbox" name="[deleteF~][item_2]" value="x" />
> <input type="checkbox" name="item_3" value="x" />
> <input type="checkbox" name="[deleteF~][item_4]" value="x" />
>
> Perhaps if better to change to:
>
> Then the POST will be:
>
> $_POST['item_1] = 'X';
> $_POST['item_3] = 'X';
> $_POST['deleteF~']['item_2] = 'X';
> $_POST['deleteF~']['item_4] = 'X';
>
> And you can do:
>
> if(isset($_POST['deleteF~'])) foreach($_POST['deleteF~'] as $Item) {
>
> // Do things with this item.
> }
>
> greetings
Nice idea.
bill
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2012-05-21 19:26 +0200 |
| Message-ID | <1718282.RzYSdqBbuY@PointedEars.de> |
| In reply to | #6104 |
Shake wrote:
> El 21/05/2012 16:22, bill escribió:
>> I have a POST array with about 200 elements.
>> There MAY be one or more key elements that start with deleteF~
>> (for example deleteF~EAP, deleteF~Lowfee)
>>
>> What I want to know is if any array element begins with deleteF~
>
> Perhaps you can use multidimensional array here.
>
> If you have something like:
>
> <input type="checkbox" name="item_1" value="x" />
> <input type="checkbox" name="[deleteF~][item_2]" value="x" />
> <input type="checkbox" name="item_3" value="x" />
> <input type="checkbox" name="[deleteF~][item_4]" value="x" />
>
> Perhaps if better to change to:
>
> Then the POST will be:
>
> $_POST['item_1] = 'X';
> $_POST['item_3] = 'X';
> $_POST['deleteF~']['item_2] = 'X';
> $_POST['deleteF~']['item_4] = 'X';
>
> And you can do:
>
> if(isset($_POST['deleteF~'])) foreach($_POST['deleteF~'] as $Item) {
>
> // Do things with this item.
> }
However, if for some reason the markup cannot be changed, the solution still
is rather simple:
$matching_keys = array_filter(array_keys($_POST),
function ($key) {
return preg_match('/^deleteF~/', $key);
});
if ($matching_keys)
{
/* … */
}
<http://php.net/array_keys>
<http://php.net/preg_match>
<http://php.net/array_filter>
PointedEars
--
var bugRiddenCrashPronePieceOfJunk = (
navigator.userAgent.indexOf('MSIE 5') != -1
&& navigator.userAgent.indexOf('Mac') != -1
) // Plone, register_function.js:16
[toc] | [prev] | [next] | [standalone]
| From | bill <nobody@spamcop.net> |
|---|---|
| Date | 2012-05-21 15:19 -0400 |
| Message-ID | <18OdnWY3FbuwCCfSnZ2dnUVZ_gudnZ2d@cablespeedmi.com> |
| In reply to | #6108 |
On 5/21/2012 1:26 PM, Thomas 'PointedEars' Lahn wrote:
> Shake wrote:
>
>> El 21/05/2012 16:22, bill escribió:
>>> I have a POST array with about 200 elements.
>>> There MAY be one or more key elements that start with deleteF~
>>> (for example deleteF~EAP, deleteF~Lowfee)
>>>
>>> What I want to know is if any array element begins with deleteF~
>>
>> Perhaps you can use multidimensional array here.
>>
>> If you have something like:
>>
>> <input type="checkbox" name="item_1" value="x" />
>> <input type="checkbox" name="[deleteF~][item_2]" value="x" />
>> <input type="checkbox" name="item_3" value="x" />
>> <input type="checkbox" name="[deleteF~][item_4]" value="x" />
>>
>> Perhaps if better to change to:
>>
>> Then the POST will be:
>>
>> $_POST['item_1] = 'X';
>> $_POST['item_3] = 'X';
>> $_POST['deleteF~']['item_2] = 'X';
>> $_POST['deleteF~']['item_4] = 'X';
>>
>> And you can do:
>>
>> if(isset($_POST['deleteF~'])) foreach($_POST['deleteF~'] as $Item) {
>>
>> // Do things with this item.
>> }
>
> However, if for some reason the markup cannot be changed, the solution still
> is rather simple:
>
> $matching_keys = array_filter(array_keys($_POST),
> function ($key) {
> return preg_match('/^deleteF~/', $key);
> });
>
> if ($matching_keys)
> {
> /* … */
> }
>
> <http://php.net/array_keys>
> <http://php.net/preg_match>
> <http://php.net/array_filter>
>
>
> PointedEars
Thanks for the education.
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.php
csiph-web