|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2018-05-16 08:42 UTC] kaishos at gmail dot com
Description: ------------ This affects php 7.0.28 that is default packages with ubuntu, could not find it in the list seems that it will not parse more options if you have parsed one. it has similarity with: https://bugs.php.net/bug.php?id=35594 Test script: --------------- create file called test.php and add: <?php $fromOpt = getopt("f:"); $toOpt = getopt("t:"); print_r($fromOpt); print_r($toOpt); ?> https://bugs.php.net/bug.php?id=35594&edit=1 then run: php test.php -f -t Expected result: ---------------- Array ( [f] => ) Array ( [t] => ) Actual result: -------------- Array ( [f] => ) Array ( ) PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Dec 14 04:00:01 2025 UTC |
Firstly, active suport support for PHP 7.0 ended five months ago[1], so this branch will only receive security related fixes. Secondly, the expected result is actually: Array ( [f] => -t ) Array ( ) See <http://php.net/manual/en/function.getopt.php>. If you really get the reported actual result with an actively supported PHP version, this would be a bug. Please check again. [1] <http://php.net/supported-versions.php>From what I can tell, no functionality has been removed. At least, I get the same result with PHP 5.6.32, for instance. And this result is to be expected, since f: looks for an option with a required argument (which is -t in this case), and t: looks for an option with a required argument which is not there. Compare that to: php test.php -ffoo -tbar => Array ( [f] => foo [t] => bar ) Array ( [t] => bar ) Which is also expected behavior. So again, do you get differing results?Ah yes, now I see that I did wrong, it was that there should be no space between arguments -f and -t and their values for it work as you pointed out. -ffoo -tbar Array ( [f] => foo ) Array ( [t] => bar ) -ffoo -t bar (this works) Array ( [f] => foo ) Array ( [t] => bar ) -f foo -tbar Array ( [f] => foo ) Array ( ) -f foo -t bar Array ( [f] => foo ) Array ( )The last two examples also behave as expected, since -f is no valid option for getopt('t:'), so “foo” is not regarded as argument of the -f option, but rather as non-option, which terminates further processing of options.